Excessive aggregator calls?

We’ve seen excessive calls to the init, process and finalizeResults. As an example, given a simple test aggregator, extending the AbstractAggregator, with one value in the (distributed) cache (with code below), this is that we see printed when running with only one default node:
Line 1: Agg instance 0, constructor with extractor
Line 2: Agg instance 0, getParallelAggregator
Line 3: Agg instance 0, init, isFinal = false
Line 4: Agg instance 0, finalizeResult, isFinal = false
Line 5: Agg instance 0, init, isFinal = false
Line 6: Agg instance 0, process, value = v1, isFinal = false
Line 7: Agg instance 0, finalizeResult, isFinal = false
Line 8: Agg instance 0, init, isFinal = true
Line 9: Agg instance 0, process, value = otherValue, isFinal = true
Line 10: Agg instance 0, process, value = otherValue, isFinal = true
Line 11: Agg instance 0, finalizeResult, isFinal = true
So line 1 and 2 are as expected where the aggregator is created and Coherence asks for the parallel reference.
But then on line 3 and 4 an empty set is obviously given as there is only a call to the init and finalizeResult methods (with isFinal = false). Only at lines 5, 6, and 7 is where the actual first round of parallel aggregation occurs, with our “v1” value being passed in to process.
We also see at line 8 till 11 that the unnecessary empty set being passed in (at line 3 and 4) and the resulting partial event returned by finalizeResult on line 4 is being used during the reduction phase.
Aggregator code:
package com.test;
import java.util.concurrent.atomic.AtomicInteger;
import com.tangosol.util.InvocableMap.EntryAggregator;
import com.tangosol.util.ValueExtractor;
import com.tangosol.util.aggregator.AbstractAggregator;
public class TestAggregator extends AbstractAggregator {
     private static final long serialVersionUID = 9073556452395065667L;
     private static final AtomicInteger counter = new AtomicInteger();
     private transient int aggInstance;
     public TestAggregator() {
          super();
          aggInstance = counter.getAndIncrement();
          System.out.println("Agg instance " + aggInstance + ", constructor");
     public TestAggregator(ValueExtractor extractor) {
          super(extractor);
          aggInstance = counter.getAndIncrement();
          System.out.println("Agg instance " + aggInstance + ", constructor with extractor");
     @Override
     public EntryAggregator getParallelAggregator() {
          System.out.println("Agg instance " + aggInstance + ", getParallelAggregator");
          return super.getParallelAggregator();
     @Override
     protected void init(boolean isFinal) {
          System.out.println("Agg instance " + aggInstance + ", init, isFinal = " + isFinal);
     @Override
     protected void process(Object value, boolean isFinal) {
          System.out.println("Agg instance " + aggInstance + ", process, value = " + value + ", isFinal = " + isFinal);
     @Override
     protected Object finalizeResult(boolean isFinal) {
          System.out.println("Agg instance " + aggInstance + ", finalizeResult, isFinal = " + isFinal);
          if (isFinal) return "finalValue";
          else return "otherValue";
Calling code:
package com.test;
import com.tangosol.net.CacheFactory;
import com.tangosol.net.NamedCache;
import com.tangosol.util.extractor.ReflectionExtractor;
import com.tangosol.util.filter.AlwaysFilter;
public class RunTestAggregator {
     public static void main(String... args) {
          NamedCache myCache = CacheFactory.getCache("my-cache");
          myCache.put("key1", new CacheObject("v1"));
          TestAggregator aggregator = new TestAggregator(new ReflectionExtractor("getValue"));
          myCache.aggregate(AlwaysFilter.INSTANCE, aggregator);
CacheObject:
package com.test;
import java.io.Serializable;
public class CacheObject implements Serializable {
     private static final long serialVersionUID = 2915772817883073850L;
     private String value;
     public CacheObject() {}
     public CacheObject(String value) {
          this.value = value;
     * @return the value
     public String getValue() {
          return value;
     * @param value the value to set
     public void setValue(String value) {
          this.value = value;
     @Override
     public int hashCode() {
          final int prime = 31;
          int result = 1;
          result = prime * result + ((value == null) ? 0 : value.hashCode());
          return result;
     @Override
     public boolean equals(Object obj) {
          if (this == obj)
               return true;
          if (obj == null)
               return false;
          if (getClass() != obj.getClass())
               return false;
          CacheObject other = (CacheObject) obj;
          if (value == null) {
               if (other.value != null)
                    return false;
          } else if (!value.equals(other.value))
               return false;
          return true;
}

BigAndy wrote:
Hi cfelde / JK,
I'm seeing similar behaviour: calls with empty sets. I'm not convinced its the partition issue you mention jk as I'm firing the aggregator against a key collection with only a single key in it. I'd assumed that the call to aggregate with an empty set was a special undocumented 'you should initialise now' call, (I'm not deriving from abstract agg as I need the backing map). But this didn't sit right and so I hit the forum and found this post.
If I'm firing the aggregator against a known collection of keys and not a filter I would expect only the nodes holding the key(s) to receieve the aggregator and run it, and for it to be run only against the partition/entry that matches that key(s).
This is not what I see. I'm currently running in little grid with 1storage node and as an extend client. When I get back into the office I'll try this against a full grid and see what gets logged. My gut tells me the empty aggregate call will be on the proxy on the main aggregator, not the parralel ones. I also don't think I saw the results of the empty ca passed to the aggregateResults, but that could be because I returned null from aggregate...
I'm on 3.7.1.6.Hi BigAndy,
AbstractAggregator is a bit tricky and is not really well documented in the Javadoc.
Read the corresponding section about it in the Coherence 3.5 book, it explains it in a much more understandable way.
The point is that there are three methods intended to be implemented in AbstractAggregator:
init, process, finalizeResult.
All three are dual purpose:
1. They are invoked in the above order as part of the parallel aggregation on the storage nodes, once per storage node. In this invocation fFinal is false. The process method receives extracted values (extracted from the entry with the aggregator passed to the constructor) in the object parameter, and the finalizeResult must create partial result object.
2. They are also invoked in the above order as part of aggregating the partial results on the caller node. In this invocation fFinal is true. The process method receives partial result objects (created by the finalizeResult methods invoked on the storage nodes) in the object parameter, and finalizeResult must return the final result.
Between the method invocations, you are supposed to maintain state in the attributes of the aggregator instance itself.
As for multiple invocation passes of (init+process*+finalizeResult) with fFinal being false on the same node, it is up to Coherence to decide in what groupings you are going to get the entries. It can depend on several things, among others whether you have partitioned backing maps, whether you have partitions transferred between nodes, possibly other things, and of course possible bugs.
The only thing that is guaranteed that all entries from the same partition are fed to process() during the same pass. You can probably also rely on the assumption that there is going to be only a single thread doing an init+process*+finalizeResult on any instance of an AbstractAggregator subclass (due to the intention of maintaining state in the aggregator instance).
Best regards,
Robert

Similar Messages

  • Experiencing Excessive Dropped Calls - Voicemail Delays - iPhone Freezing

    I've been having problems with excessive dropped calls (on speaker, headset, handset).
    Any conversations today (Sat 6/15) longer than a few (2-5) minutes have been dropped!!!!
    I have had two (2) very important calls today that I have had to attempt between 9-16 times due to this...
    Also... I received a missed call at exactly 6:32pm but did not get the message until 7:02pm...
    WHAT IS GOING ON????

    Have you done a reset (hold sleep/wake button and home button until the Apple logo appears)? Or a restore?
    If neither of these ideas correct the problem, you will need to make an appointment at the Genius Bar - http://apple.com/retail

  • Excessive database calls from DMZ portal as opposed to from internal portal

    Ever since our upgrade from 5.0.4 to ALUI 6.1 MP1, our extranet server in the DMZ is very slow to load. (36 seconds per page.) In the spy, all of the calls to the database are made repeatedly as if they are looping. When the page has completely loaded, you can still all the same calls being made to the database in the spy.
    When this box is brought from the DMZ into the LAN, it operates correctly and you only see the calls to the database the one time. All of the necessary ports are open in the firewall.
    Does anyone have any ideas? There are no errors in the log, just the continues looping of SELECT statements, etc.

    Hi ,
    As Simon pointed in previous reply , DB should not be directly updated. It should be via components which use API delivered. I haven't come across where shuch functionality is required . If the DB is allowed to updated directly , then there is a possibilty where the end user's action may corrupt the DB.
    Thanks
    Nishant

  • Excessive dropped calls with full signal!!!

    I have a 3GS and have updated to 3.1.2 I recall that one of the items addressed in this update was the dropped calls issue. Mine have been severely worse since the update. It is quite aggravating when the calls dropped are when I have full signal. I am not the only one I know with this particular issue. Is this being addressed?

    The phone on the iphone is not the best. I live in Dallas and when the phone is on 3g it really is unusable. Just for grins I started a call log for a day. In my very unscientific experiment I dropped (or couldn't hear the person and had to call back) 76.6% of my calls when I 3g for the day. In my opinion, Apple or no Apple, this is unacceptable for any cell phone. I tried calling ATT to see if I could get some credit and they said no. I have taken the phone to the apple store and they said it was the network not the phone. I have restored the phone, reset the phone, updated the phone, and still nothing seems to work.
    However, when the phone is in 2g it seems to work fine. Except the only problem with that is when you are searching the net, or checking email and someone calls you it won't ring. This a mild annoyance because at least when I do call or someone calls me I can talk to them and they can hear me.
    The iphone is the worst cell phone on the market and best pocket computer you can buy.
    You decide.

  • CLOSED:3-1011013871(Excessive UNIX bff calls from PSFTApp, Perf issue)

    Hi All, question about "bdf"( not sure what that does/means).
    Is there anyway we could turnoff this process within Peoplesoft, where UNIX (OS) do monitor disk space/usage regularly?
    your thoughts...
    Ct note:
    Our UNIX system administrator has noticed that on our PeopleSoft HP UX Server there appears to be what he calles excessive "bdf" calls on the server from the PeopleSoft
    applications that reside on that server (PeopleSoft HR and AR). Here is the text of his email to me "Can you research anywhere within the PeopleSoft HR support areas why
    the "bdf" command is issued so many times? The bdf command simply checks disk space usage. We see that command hanging a lot on FH0038 when the system is really slow,
    and it may be contributing to the long queue times for the Melksham (GBR) people. It appears that there are several processes with PeopleSoft (both HR and AR) that issue
    the bdf command on a very frequent basis. Can we get that shut off? Maybe a setting in one of the administration screens or maybe a config file that we need to change????
    From the OS perspective, we regularly monitor the disk usage (using bdf), so I don't think it's necessary that the PeopleSoft processes run this command so many times."
    Please advise!!
    Edited by: tthava on Sep 25, 2009 2:41 PM

    bdf is purely OS level process, I'm not sure how it could be called by Peoplesoft process. By the way, you changed the thread's titel to "CLOSED", does that mean it is solved ?
    Nicolas.

  • EntryProcessor invokeAll returning empty ConverterMap{}

    Hi All,
    I am trying to write a custom entryprocessor and whatever I return from the invokeAll method in the entryprocessor, I am always getting a empty ConverterMap{}. The code for the entryprocessor is as below:
    public class CustomEP implements PortableObject, EntryProcessor {
         public CustomEP (){
    public Map processAll(Set entries) {
              Map results=new HashMap ();
    results.put ("1", "1");
    System.out.println("Inside process All method");
              return results;
    public Object process(Entry arg0) {
              Map results=new HashMap ();
    results.put ("1", "1");
    System.out.println("Inside process method");
              return results;
    The client code to invoke this entryprocessor is as below:
    Map results=cache.invokeAll(AlwaysFilter.INSTANCE, new CustomEP());
    The processAll method on the Coherence nodes is invoked but if the print the results on the client side it return empty ConverterMap{}
    On the other hand, if I invoke process method of CustomEP as below:
    Map results=(Map) cache.invoke(AlwaysFilter.INSTANCE, new CustomEP());
    I get the desired results. Please help me with the details why it is happening this way when the return type of the processAll is a Map.
    Thanks a lot!
    Regards,
    S

    911767 wrote:
    Hi Robert and JK,
    Thank you for your reply and time!
    I could not find these details in any of the documentation that specifies keys passed in the result should be subset of the keys passed to the processAll method. Anyways, my problem is to invoke server-side code (avoid de-serialization) by passing a filter and then create a entirely new map (key and value will be different from the entries extracted from the passed filter) by reading the data from the passed entries. How can I implement it?
    I am thinking to use aggregator as they are read-only and faster but again how to implement it using:
    public Object aggregate(Set entries){
    Again, I am getting an empty Map so is it necessary that the object returned should have keys matching the set of the entries passed to this method.
    Secondly, there are other methods such as, finalizeResult() and init() if I extend AbstractAggregator, do I need to implement them and if yes, how? The entries set passed to the aggregate() method may not reside on the same node.
    Please advise!
    Regards,
    SHi S,
    the process() return value object, or the entry value objects in the map returned by processAll() can be arbitrary objects. So you just return a map from process(), and return a map as the entry value in the result map from processAll().
    The AbstractAggregator has a fairly badly documented contract in the Javadoc (does not properly cover the values received in different scenarios for invocation). You should probably read the section about it in the Coherence book, that explains leveraging AbstractAggregator in significantly more details. It also happens to be in the sample chapter, but I recommend reading the entire book.
    I am not sure about the issues relating to posting links to PDFs on Packt's webpage, so I won't do that. Please go to Packt's webpage (http://www.packtpub.com ), look for the Coherence book there and download the sample chapter (or order the book).
    In short, all 3 to-be-implemented methods (init(), process(), finalizeResult()) in AbstractAggregator are called both on the server and on the caller side. You can distinguish which side you are on from looking at both the passed in fFinal boolean parameter and the m_fParallel attribute tof the aggregator instance.
    There are 3 cases:
    - non-parallel aggregation processing extracted values (m_fParallel is false, I don't remember what fFinal is in this case),
    - parallel aggregation storage side processing extracted values (if I correctly remember, m_fParallel is true, fFinal is false),
    - parallel aggregation caller side processing parallel results (m_fParallel and fFinal are both true).
    Depending on which side you are on, the process method takes different object types (on server side it receievs the extracted value, on caller side it receives a parallel result object instance).
    You SHOULD NOT override any of the other methods (e.g. aggregate() which you mentioned).
    The advantage of this approach is that the AbstractAggregator subclass instance can pass itself off as a parallel-aggregator instance.
    You should put together a temporary result in a member attribute of the AbstractAggregator subclass, which also means that it will likely not be thread-safe, but at the moment it is not necessary for it to be thread-safe either as it is called only on a single-thread.
    Best regards,
    Robert
    Edited by: robvarga on Feb 3, 2012 10:38 AM

  • BMM derived logical column - bounced visit

    In Web Metrics, a "bounced visit" is when a session views only one page on a website and then leaves. In my fact table, I capture the "total pages" viewed for each session and I define this metric in my Business Model with an aggregation rule of "sum". I'm trying to use this metric to derive the "bounced visit" metric but I'm running into issues.
    Session ID Total Pages
    1179860475     5
    1179861625     1 <= This is a bounced visit
    1179861920     7
    1179866260     2
    1179868693     13
    If I define "bounced visits" as
    CASE WHEN "total pages" = 1 THEN 1 ELSE 0 END
    What I see in the session logs is:
    CASE WHEN sum("total pages") = 1 THEN 1 ELSE 0 END
    The aggregation of the "total pages" is being done first and then the derived metric is being calculated. This leads to incorrect results. Is there anyway of solving this in the business model? I know that I can go back to the ETL, calculate a "bounce visit" metric, store it in the fact, build out aggregates, etc. I was looking for a short term solution.
    Other things I've tried:
    1) make a copy of the "total pages" column and turning off the aggregation, call it "total pages - no aggregation"
    this leads to queries of the form:
    select distinct T22583.TOTAL_PAGES as c1
    from
    WEB_SESSIONS_A1 T22583
    order by c1
    2) Create a logical column based on "total pages - no aggregation"
    bounced visit = CASE WHEN EnterpriseWarehouse."Web Sessions"."Total Pages - no aggregation" = 1 THEN 1 ELSE 0 END
    This leads to [nQSError: 14020] None of the fact tables are compatible with the query request Web Sessions.bounced visit.

    Cool. I now have two approaches to solve the problem. Thanks for your help. Using your technique, the new logical column shows up in the Logical Table Source screen and I can define an expression for that logical column. The second approach leaves the table type as a Physical table. This has some benefits as I've noticed that the queries that are generated when the table type is defined as a Select statement end up retrieving all of the columns, even though I only needed to act on one of them.

  • Problem Installing 5.0.?.?.? on Tour

    The Tour said I should upgrade software. I downloaded software, which took about 3 hours. Then it gave me the option to install the software or schedule it, stating that the phone would be out of service for about 2 hours while the software was installed. I scheduled for 02:00. When I got up this morning, there was a message that the install was complete; but it again asked me to "install now" or "schedule" the installation. there was no way out of this screen without selecting one of those 2 options. I removed the battery to reboot. Aftere coming up on the main screen, I stupidly went to the download folder to see if the update was still there. It immediately put me back in the choice of  "Install now" or "schedule".
    This is my first smart phone. I transferred from AT&T to Sprint with the Blackberry. In the 3 weeks I've had it I've spent 20 hours on the phone with customer support, had the Blackberry replaced, and  spent at least 5 hours   in the local Sprint store. Local support personnel seem to be clueless. I have some good support by phone, and some not so good, but all in all, I've been very disappointed with the device software and the support. They replace the phone after it supposedly failed a signal test they ran due to excessive dropped calls at my home. The new phone was just as bad, and now they're telling me that won't be fixed because I live in a "fair" coverage area, even though the coverage map I found on the web before switching to Sprint showed my area had excellent coverage.
    My daughter, who lives in another state, has a Curve which she is very happy with. Her coverage map shows "fair", but she's never had trouble using the phone in her home; mine is totally unusable in my house.
    Appreciate any suggestions you have regarding the  problems with software upgrade.  Thanks

    Hi and Welcome to the Forums!
    From your description, it sounds like you attempted an OTA upgrade...a method which I never recommend. Never. Never. Never.
    Rather, follow this procedure:
    http://supportforums.blackberry.com/t5/BlackBerry-Device-Software/How-To-Reload-Your-Operating-Syste...
    Best!
    Occam's Razor nearly always applies when troubleshooting technology issues!
    If anyone has been helpful to you, please show your appreciation by clicking the button inside of their post. Please click here and read, along with the threads to which it links, for helpful information to guide you as you proceed. I always recommend that you treat your BlackBerry like any other computing device, including using a regular backup schedule...click here for an article with instructions.
    Join our BBM Channels
    BSCF General Channel
    PIN: C0001B7B4   Display/Scan Bar Code
    Knowledge Base Updates
    PIN: C0005A9AA   Display/Scan Bar Code

  • SIP play-out delay

    Dear all,
    I am having a problem with RTP packets. I have deployed cucm 8.6, and for some reson its response time is very variable even whe I ping
    the server from inside the vlan. ( there is almost 20% packet loss ).
    Reply from 192.168.223.100: bytes=32 time=9ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=20ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=203ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=7ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=80ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=15ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=15ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=7ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=283ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=20ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=10ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=28ms TTL=63
    Reply from 192.168.223.100: bytes=32 time=7ms TTL=63
    This causes voice disruption. I have not found any problem with processor, memory ect. There is no alert related to this issue.
    Is there any way to configure a buffer for rtp packets, so that they are delayed before being sent. I have activated the MTP but it does only
    transcoding.
    Thanks in advance,
    Ibra

    Thanks for the reply,
    By checking the logs I found this issue:
    Excessive mixer calls, which is related to this bug:
    http://tools.cisco.com/Support/BugToolKit/search/getBugDetails.do?method=fetchBugDetails&bugId=CSCte19629
    However it is not clear how to fix it.
    Regards,
    Ibra

  • Alternative mathod for this query

    i wrote procedures
    one for getting data from source table to staging table. and
    seconed one is cross tab query to get data in target table format.
    can you help me make it more simple this query.
    thanks for your help in advance
    PROCEDURE repo_bk_proc is
    Begin
    --To Get all discrete Portfolios                           
    INSERT INTO repo_bk_staging
    (DATA_DT,
    REPO_BK_IND,
    PORTFOLIO,
    BUCKET,
    ACCT_CNT,
    PRIN_BAL)
    SELECT V_DATA_DT,
    CASE WHEN REPO_IND = ´N´ AND BKRPT_IND = ´N´ THEN ´01A_NONREPO_NONBK´
    WHEN REPO_IND = ´N´ AND BKRPT_IND = ´B´ THEN ´01B_NONREPO_BK´
    WHEN REPO_IND = ´R´ AND (STAT_SECND_1 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_2 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_3 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_4 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_5 IN (´B2´, ´B3´,´B7´,´BC´)) THEN ´02B_REPO_BK´
    WHEN REPO_IND = ´R´ AND BKRPT_IND = ´N´ THEN ´02A_REPO_NONBK´
    ELSE ´UNKNOWN´ END AS REPO_BK_IND,
    case
    when acct_num like ´110050000%´ then
    (case when LGL_ENT_CURR<=8999 then ´4´
    else ´10´ end)
    when acct_num like ´110050004%´ then
    (case when LGL_ENT_CURR<=8999 then ´2´
    else ´8´ end)
    when acct_num like ´110050006%´ then
    (case when LGL_ENT_CURR<=8999 then ´5´
    else ´11´ end)
    when acct_num like ´110050008%´ then
    (case when LGL_ENT_CURR<=8999 then ´1´
    else ´7´ end)
    ELSE ´ALL_0´ END AS PORTFOLIO,
    CASE WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,1),´mm´)-1 THEN ´00_CURRENT´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,0),´mm´)-1 THEN ´0_1_29´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-1),´mm´)-1 THEN ´1_30_59´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-2),´mm´)-1 THEN ´2_60_89´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-3),´mm´)-1 THEN ´3_90_119´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-4),´mm´)-1 THEN ´4_120_149´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-5),´mm´)-1 THEN ´5_150_179´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-6),´mm´)-1 THEN ´6_180_209´
    ELSE ´7_210_PLUS´ END AS BUCKET,
    COUNT(*) AS ACCT_CNT, SUM(PRIN_BAL) AS PRIN_BAL
    FROM AUTOR2.DLQ_RPT WHERE DATA_DT = trunc(v_data_Dt)
    GROUP BY
    CASE WHEN REPO_IND = ´N´ AND BKRPT_IND = ´N´ THEN ´01A_NONREPO_NONBK´
    WHEN REPO_IND = ´N´ AND BKRPT_IND = ´B´ THEN ´01B_NONREPO_BK´
    WHEN REPO_IND = ´R´ AND (STAT_SECND_1 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_2 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_3 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_4 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_5 IN (´B2´, ´B3´,´B7´,´BC´)) THEN ´02B_REPO_BK´
    WHEN REPO_IND = ´R´ AND BKRPT_IND = ´N´ THEN ´02A_REPO_NONBK´
    ELSE ´UNKNOWN´ END,
    case
    when acct_num like ´110050000%´ then
    (case when LGL_ENT_CURR<=8999 then ´4´
    else ´10´ end)
    when acct_num like ´110050004%´ then
    (case when LGL_ENT_CURR<=8999 then ´2´
    else ´8´ end)
    when acct_num like ´110050006%´ then
    (case when LGL_ENT_CURR<=8999 then ´5´
    else ´11´ end)
    when acct_num like ´110050008%´ then
    (case when LGL_ENT_CURR<=8999 then ´1´
    else ´7´ end)
    ELSE ´ALL_0´ END,
    CASE WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,1),´mm´)-1 THEN ´00_CURRENT´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,0),´mm´)-1 THEN ´0_1_29´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-1),´mm´)-1 THEN ´1_30_59´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-2),´mm´)-1 THEN ´2_60_89´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-3),´mm´)-1 THEN ´3_90_119´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-4),´mm´)-1 THEN ´4_120_149´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-5),´mm´)-1 THEN ´5_150_179´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-6),´mm´)-1 THEN ´6_180_209´
    ELSE ´7_210_PLUS´ END
    union
    -- To Get ALL portfolios total
    SELECT v_DATA_DT,
    CASE WHEN REPO_IND = ´N´ AND BKRPT_IND = ´N´ THEN ´01A_NONREPO_NONBK´
    WHEN REPO_IND = ´N´ AND BKRPT_IND = ´B´ THEN ´01B_NONREPO_BK´
    WHEN REPO_IND = ´R´ AND (STAT_SECND_1 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_2 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_3 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_4 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_5 IN (´B2´, ´B3´,´B7´,´BC´)) THEN ´02B_REPO_BK´
    WHEN REPO_IND = ´R´ AND BKRPT_IND = ´N´ THEN ´02A_REPO_NONBK´
    ELSE ´UNKNOWN´ END AS REPO_BK_IND,
    case when LGL_ENT_CURR<=8999 then ´01_ALL´
    else ´01_ALL_CO´ end AS PORTFOLIO,
    CASE WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,1),´mm´)-1 THEN ´00_CURRENT´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,0),´mm´)-1 THEN ´0_1_29´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-1),´mm´)-1 THEN ´1_30_59´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-2),´mm´)-1 THEN ´2_60_89´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-3),´mm´)-1 THEN ´3_90_119´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-4),´mm´)-1 THEN ´4_120_149´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-5),´mm´)-1 THEN ´5_150_179´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-6),´mm´)-1 THEN ´6_180_209´
    ELSE ´7_210_PLUS´ END AS BUCKET,
    COUNT(*) AS ACCT_CNT, SUM(PRIN_BAL) AS PRIN_BAL
    FROM AUTOR2.DLQ_RPT WHERE DATA_DT = trunc(v_data_Dt)
    GROUP BY
    CASE WHEN REPO_IND = ´N´ AND BKRPT_IND = ´N´ THEN ´01A_NONREPO_NONBK´
    WHEN REPO_IND = ´N´ AND BKRPT_IND = ´B´ THEN ´01B_NONREPO_BK´
    WHEN REPO_IND = ´R´ AND (STAT_SECND_1 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_2 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_3 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_4 IN (´B2´, ´B3´,´B7´,´BC´)
    OR STAT_SECND_5 IN (´B2´, ´B3´,´B7´,´BC´)) THEN ´02B_REPO_BK´
    WHEN REPO_IND = ´R´ AND BKRPT_IND = ´N´ THEN ´02A_REPO_NONBK´
    ELSE ´UNKNOWN´ END,
    case when LGL_ENT_CURR<=8999 then ´01_ALL´
    else ´01_ALL_CO´ end,
    CASE WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,1),´mm´)-1 THEN ´00_CURRENT´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,0),´mm´)-1 THEN ´0_1_29´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-1),´mm´)-1 THEN ´1_30_59´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-2),´mm´)-1 THEN ´2_60_89´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-3),´mm´)-1 THEN ´3_90_119´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-4),´mm´)-1 THEN ´4_120_149´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-5),´mm´)-1 THEN ´5_150_179´
    WHEN CONT_DATE > trunc(add_months(v_data_Dt+1,-6),´mm´)-1 THEN ´6_180_209´
    ELSE ´7_210_PLUS´ END
    ORDER BY REPO_BK_IND, BUCKET,PORTFOLIO;
    COMMIT;
    End repo_bk_proc;
    PROCEDURE repo_bk_rpt_proc is
    Begin
    INSERT INTO REPO_BK_RPT (
    DATA_DATE,PORTFOLIO,REPO_BK_IND,CURRENT_PRIN_BAL,CURRENT_ACCT_CNT,ONE_MTH_PRIN_BAL,ONE_MTH_ACCT_CNT,
    TWO_MTH_PRIN_BAL,TWO_MTH_ACCT_CNT,THR_MTH_PRIN_BAL,THR_MTH_ACCT_CNT,FOUR_MTH_PRIN_BAL,FOUR_MTH_ACCT_CNT,
    FIVE_MTH_PRIN_BAL,FIVE_MTH_ACCT_CNT,SIX_MTH_PRIN_BAL,SIX_MTH_ACCT_CNT,SEVE_MTH_PRIN_BAL,SEVE_MTH_ACCT_CNT,
    SEVE_MTH_PLUS_PRIN_BAL,SEVE_MTH_PLUS_ACCT_CNT)
    values
    SELECT A.DATA_DT, A.PORTFOLIO, A.REPO_BK_IND,
    (NVL((SELECT B.PRIN_BAL FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´00_CURRENT´),0))/1000 AS CURRENT_PRIN_BAL,
    NVL((SELECT B.ACCT_CNT FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´00_CURRENT´),0) AS CURRENT_ACCT_CNT,
    (NVL((SELECT B.PRIN_BAL FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´0_1_29´),0))/1000 AS ONE_MTH_PRIN_BAL,
    NVL((SELECT B.ACCT_CNT FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´0_1_29´),0) AS ONE_MTH_ACCT_CNT,
    (NVL((SELECT B.PRIN_BAL FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´1_30_59´),0))/1000 AS TWO_MTH_PRIN_BAL,
    NVL((SELECT B.ACCT_CNT FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´1_30_59´),0) AS TWO_MTH_ACCT_CNT,
    (NVL((SELECT B.PRIN_BAL FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´2_60_89´),0))/1000 AS THR_MTH_PRIN_BAL,
    NVL((SELECT B.ACCT_CNT FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´2_60_89´),0) AS THR_MTH_ACCT_CNT,
    (NVL((SELECT B.PRIN_BAL FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´3_90_119´),0))/1000 AS FOUR_MTH_PRIN_BAL,
    NVL((SELECT B.ACCT_CNT FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´3_90_119´),0) AS FOUR_MTH_ACCT_CNT,
    (NVL((SELECT B.PRIN_BAL FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´4_120_149´),0))/1000 AS FIVE_MTH_PRIN_BAL,
    NVL((SELECT B.ACCT_CNT FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´4_120_149´),0) AS FIVE_MTH_ACCT_CNT,
    (NVL((SELECT B.PRIN_BAL FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´5_150_179´),0))/1000 AS SIX_MTH_PRIN_BAL,
    NVL((SELECT B.ACCT_CNT FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´5_150_179´),0) AS SIX_MTH_ACCT_CNT,
    (NVL((SELECT B.PRIN_BAL FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´6_180_209´),0))/1000 AS SEVE_MTH_PRIN_BAL,
    NVL((SELECT B.ACCT_CNT FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´6_180_209´),0) AS SEVE_MTH_ACCT_CNT,
    (NVL((SELECT B.PRIN_BAL FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´7_210_PLUS´),0))/1000 AS SEVE_MTH_PLUS_PRIN_BAL,
    NVL((SELECT B.ACCT_CNT FROM REPO_BK_STAGING B WHERE A.PORTFOLIO = B.PORTFOLIO
    AND A.REPO_BK_IND =B.REPO_BK_IND AND B.BUCKET = ´7_210_PLUS´),0) AS SEVE_MTH_PLUS_ACCT_CNT
    FROM REPO_BK_STAGING A
    GROUP BY DATA_DT, PORTFOLIO, REPO_BK_IND
    ORDER BY PORTFOLIO,REPO_BK_IND;
    COMMIT;
    End repo_bk_rpt_proc;

    can you help me make it more simple this query.Not really sure what you're expecting us to do. If those are your business rules those are your business rules. You might be able to make it slightly more readable by putting the basic selects in an inner view and putting the aggregating calls in an outer view but then you would have to distinguish between the "discrete portfolios" and "all portfolios" queries.
    Which leads me to a question? Do you know why you are using UNION rather than UNION ALL? Because UNION does an additional sort and may produce a different set of data than running either with UNION ALL or two separate queries.
    Cheers, APC

  • Do Apple developers think we're stupid?

    Hi,
    I'm new in this community but not so new to Apple computers. My first Apple was a SE, somewhere around 1987. (I still have it by the way)
    I don't know if this is the right place to complain and if Apple people follow these conversations but I need to get this off my chest:
    Do Apple developers think we're stupid?
    With every upgrade we get more 'automated' features and less openness in our own Mac's. This morning I helped a colleague with her brand new MacBook Pro and realized that the finder window did not show her as user and her Library was not visible. I seems you need to ‘fool’ the search feature to get into a user library. That is sick and quite unnecessary.
    Why on earth do developers make the system more like a Nintendo game with every update? And, how can we stop this?
    Cheers, Joris

    It's likely because lots of users would delete things in the "Library" folder because they didn't know what they were; leading to system instability and/or excessive support calls.
    Most users do not need to access the ~/Library folder.
    If you want to access it, just enter this in Terminal:
    chflags nohidden ~/Library
    You'll need to run it again each time you do a system update.
    As far as "less openness," there's no less openness in OS X today than there was in OS X 10.0.

  • Rainflow modification....

    Hello... bit of a longer one this.
    I've used the script kindly posted by ChristianW ages back, and modified it to go through a mass of channels and create a group for each one, then do a rainflow analysis, and create a range-mean matrix. It works fine on the first channel, and then puts in 0 for all the other channel's matrices. 
    The original script is here...
    http://forums.ni.com/ni/board/message?board.id=60&message.id=6159
    Then my modified version is as below....
    Any thoughts?
    Thankyou!!!!!!
    Tom
    Option Explicit
    sub ConvertFromTo2RangeMean(ChX,ChY,ChZ,x)'original subroutine
      Dim clx, cly, clz, bError, i, j, Delta, myValue, xi, yi, oldValue
      Call GroupDefaultSet(x)         ' I added this line in to make sure we stay in the right group... made no other changes within the subroutine, all the other changes are at the main program at the bottom
      if (ChX<=0) or (ChY<=0) or (ChZ<=0) then
        exit sub
      end if
      clx=Cl(ChX) 'From
      cly=Cl(ChY) 'To
      if (clx<2) or (cly<2) or (clx<>cly) then
        exit sub
      end if
      bError=false
      for i=0 to clx-1
        clz=cl(ChZ+i)
        if clz<>clx then
          bError=true
        end if
      next
      if bError then
        exit sub
      end if
      'create range vector
      Delta= ChD(2,ChX)-ChD(1,ChX)
      call ChnAlloc("Range",clx)
      for i=1 to clx
        ChD(i,"Range")= (i-1)*Delta
      next
      'create mean vector
      call ChnAlloc("Mean",cly)
      for i=1 to cly
        ChD(i,"Mean")= chd(i,chx)
      next
      'create matrix
      for i=1 to clx
        call ChnAlloc("Z"&i,clx)
        cl("Z"&i)=clx
      next
      'initialize matrix
      for i=1 to clx
        for j=1 to cly
          Chd(i,"Z"&j)=0
        next
      next
      for i=1 to clx
        for j=1 to cly
          if i<>j then 'No countings on the diagonal
            myValue = Chd(i,ChZ+j-1)
            if myValue<>0 then 'Any counting?
              xi=abs(j-i)+1             'Range
              yi=round(abs(j+i)/2+0.49) 'Mean (will be counted class wise ==> mean 3.5 is in class 4)
              oldValue = Chd(xi,"Z"&yi)
              Chd(xi,"Z"&yi)=oldValue+myValue
            end if
          end if
        next
      next
    end sub
    ' Modification to script....
    Dim x
    dim j
    Dim nameofgroup
    Dim nGlobUsedChn
    for x=2 to 5
    'GroupChnCount(1)
      Call GroupDefaultSet(1)
      nameofgroup=ChnName(x)
      Call GroupCreate(nameofgroup,x)     '... GroupCreateName,TargetGroupIndex                '... TargetGroupIndex
      Call ChnClpCopy("[1]/["&x&"]")    '... ClpSource
      Call GroupDefaultSet(x)
      Call ChnClpPaste(ChnNoMax+1)                   '... ClpTarget
      Call GroupDefaultSet(x)   'make sure we are deleting the right channels
      nGlobUsedChn = GlobUsedChn
    '  ClassMeth2       ="Automatic"
    '  ClassNo          =30
    '  RainResiduumCalc =0
    '  RainFrequencyTyp ="Cumulative"
    '  RainChnContain   ="Class mean"
    '  Hysteresis       =0
    '  RainMatTrans(1)  =0
    '  RainMatTrans(2)  =1
    '  RainOneParaCalc(1)=0
    '  RainOneParaCalc(2)=0
    '  RainOneParaCalc(3)=0
    '  RainOneParaCalc(4)=0
    '  RainSpecOnePara(1)=0
    '  RainSpecOnePara(2)=0
    '  RainSpecOnePara(3)=0
    '  RainSpecOnePara(4)=0
      Call ChnRainCalc(ChnNoMax,"Automatic",0,0,"Cumulative") '... Y,ClassMeth2,RainResiduumCalc,Hysteresis,FrequencyPara
      Call ConvertFromTo2RangeMean(nGlobUsedChn+1,nGlobUsedChn+3,nGlobUsedChn+3,x)
      'delete excess channels
    '  Call GroupDefaultSet(x)   'make sure we are deleting the right channels
    '  Call ChnDelete("ResidueStartClasses")
    '  Call ChnDelete("ResidueTargetClasses")
    '  Call ChnDelete("RainflowMatrixX")
    '  Call ChnDelete("RainflowMatrixY")
    '  for j = 1 to ClassNo
    '    Call GroupDefaultSet(x)   'make sure we are deleting the right channels
    '    Call ChnDelete("RainflowMatrixZ"&j)
    '  next
    nGlobUsedChn = 0
    next
    Solved!
    Go to Solution.

    Hello Tom,
    this modification of your script should run:
    Option Explicit
    sub ConvertFromTo2RangeMean(ChX,ChY,ChZ,x)'original subroutine
    Dim clx, cly, clz, bError, i, j, Delta, myValue, xi, yi, oldValue
    Call GroupDefaultSet(x) ' I added this line in to make sure we stay in the right group... made no other changes within the subroutine, all the other changes are at the main program at the bottom
    if (ChX<=0) or (ChY<=0) or (ChZ<=0) then
    exit sub
    end if
    clx=Cl(ChX) 'From
    cly=Cl(ChY) 'To
    if (clx<2) or (cly<2) or (clx<>cly) then
    exit sub
    end if
    bError=false
    for i=0 to clx-1
    clz=cl(ChZ+i)
    if clz<>clx then
    bError=true
    end if
    next
    if bError then
    exit sub
    end if
    'create range vector
    Delta= ChD(2,ChX)-ChD(1,ChX)
    call ChnAlloc("Range",clx)
    for i=1 to clx
    ChD(i,"/Range")= (i-1)*Delta
    next
    'create mean vector
    call ChnAlloc("Mean",cly)
    for i=1 to cly
    ChD(i,"/Mean")= chd(i,chx)
    next
    'create matrix
    for i=1 to clx
    call ChnAlloc("Z"&i,clx)
    cl("/Z"&i)=clx
    next
    'initialize matrix
    for i=1 to clx
    for j=1 to cly
    Chd(i,"/Z"&j)=0
    next
    next
    for i=1 to clx
    for j=1 to cly
    if i<>j then 'No countings on the diagonal
    myValue = Chd(i,ChZ+j-1)
    if myValue<>0 then 'Any counting?
    xi=abs(j-i)+1 'Range
    yi=round(abs(j+i)/2+0.49) 'Mean (will be counted class wise ==> mean 3.5 is in class 4)
    oldValue = Chd(xi,"/Z"&yi)
    Chd(xi,"/Z"&yi)=oldValue+myValue
    end if
    end if
    next
    next
    end sub
    ' Modification to script....
    Dim x
    dim j
    Dim nameofgroup
    Dim nGlobUsedChn
    for x=2 to 5
    'GroupChnCount(1)
    Call GroupDefaultSet(1)
    nameofgroup=ChnName(x)
    Call GroupCreate(nameofgroup,x) '... GroupCreateName,TargetGroupIndex '... TargetGroupIndex
    Call ChnClpCopy("[1]/["&x&"]") '... ClpSource
    Call GroupDefaultSet(x)
    Call ChnClpPaste(ChnNoMax+1) '... ClpTarget
    Call GroupDefaultSet(x) 'make sure we are deleting the right channels
    nGlobUsedChn = GlobUsedChn
    ' ClassMeth2 ="Automatic"
    ClassNo =30
    ' RainResiduumCalc =0
    ' RainFrequencyTyp ="Cumulative"
    RainChnContain ="Class mean"
    ' Hysteresis =0
    RainMatTrans(1) =0
    RainMatTrans(2) =1
    RainOneParaCalc(1)=0
    RainOneParaCalc(2)=0
    RainOneParaCalc(3)=0
    RainOneParaCalc(4)=0
    RainSpecOnePara(1)=0
    RainSpecOnePara(2)=0
    RainSpecOnePara(3)=0
    RainSpecOnePara(4)=0
    Call ChnRainCalc(ChnNoMax,"Automatic",0,0,"Cumulative") '... Y,ClassMeth2,RainResiduumCalc,Hysteresis,FrequencyPara
    Call ConvertFromTo2RangeMean(nGlobUsedChn+1,nGlobUsedChn+2,nGlobUsedChn+3,x)
    'delete excess channels
    ' Call GroupDefaultSet(x) 'make sure we are deleting the right channels
    ' Call ChnDelete("ResidueStartClasses")
    ' Call ChnDelete("ResidueTargetClasses")
    ' Call ChnDelete("RainflowMatrixX")
    ' Call ChnDelete("RainflowMatrixY")
    ' for j = 1 to ClassNo
    ' Call GroupDefaultSet(x) 'make sure we are deleting the right channels
    ' Call ChnDelete("RainflowMatrixZ"&j)
    ' next
    nGlobUsedChn = 0
    next
    The changes I made are in detail:
    In ConvertFromTo2RangeMean I changed references via channel name from "name" to "/name". This ensures referring the channel "name" in the default group instead of the first channel "name" in all channels.
    All global parameters (e.g. ClassNo, RainMatTrans(2)) must be set before running ChnRainCalc.
    ConvertFromTo2RangeMean must be called with the first, second and third result channel of ChnRainCalc.
    Christian

  • Loading a tree of objects from a cache in a single call using an aggregator

    Hi,
    I currently have the following problem. I am trying to load a tree of objects from coherence by recursing up an object tree from a child object.
    What is currently in place is something like this (not actual implementation).
    Child child...// initialisation of Child;
    List<Parent> parents = new LinkedList<Parent>();
    Parent parent = null;
    int parentId = child.getParentId();
    while (true) {
    parent = cache.get(parentId);
    if (parent != null) {
    parents.add(parent);
    parentId = parent.getParentId();
    } else {
    break;
    However, this results in a number of calls over the network to the coherence cache and is proving to be quite inefficient. What I would like is to be able to write something like a filter or an aggregation function which will simply take in the child, or the parent id of the child, and return a list of all the parents (with the recursion logic taking place on the coherence node). This will hopefully reduce network latency considerably.
    Does anybody know how to go about doing this within coherence?

    XML might be a better solution, but using tags should work.
    The Sun tutorial at http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPTags5.html#68205 should be helpful to you.
    When processing a tag, determine if there is a parent tag by using getParent() or findAncestorWithClass().
    If there is no parent, instantiate your site navigation object based on the tag arguments and save a reference within the tag object. You'll probably want to also add the reference to page or session scope as an attribute for later use.
    If there is a parent, instantiate the new navigation object and then retrieve the parent navigation object from the parent tag (create a getNavigation() method in tag?). Then add the new navigation object to the array in the parent navigation object.

  • Captivate 8 aggregator exe project not calling external files

    I published a project as HTML in captivate 8 and then using aggregator i published it as exe.
    Now the exe project does not call the pdf files attached to it. While the same was working fine in the HTML version.

    I'm having a similar issue. I've used a "home" button to return to the main menu of the course. However, all it does is return me to the last screen I was on. I've tried linking the button to a the aggregator htm and to the swf. Neither gives me the results I want. I currently have it set to open in the current window. However, I get the feeling that it's automatically invoking a bookmarking feature and I'm not getting the pop-up box asking me if I want to return to the last screen or not.

  • Dropped calls, no service, excessive data usage, extremely low battery life

    Ever since downloading the new update all my calls are dropped, I have no service anywhere I never get over three circles anywhere and when making a call it will instantly drop to lower service, my phones battery is quickly drained. my phone has been using excessive amounts of data, even while at home on wifi. I have my cellular data off, back app refresh off, and have taken it into the verizon store they worked on it for a half hour and said it should be good but there is no change. While there I had the rep check coverage for my home, because while I had coverage before I no longer do, he confirmed I should have full coverage 4g Lte, and that I was in an amazing area for coverage. Except I"m not getting any coverage. I've also sat on the phone with verizon several times and had them try to fix it, no help. The circles that show coverage/service will change when I"m not even moving around, for whatever reason. My phone also just generally runs slower and will occasionally freeze up when pressing the home button or closing an app.
    I'm sure you'll ask for it so my zip is 53704

        aliviadomek,
    I'm very sorry to hear about the troubles with your Apple device.  We're here to further assist and make sure we find resolution for you.  Thank you for already answering a lot of questions and taking care of some troubleshooting.  At this point I would recommend a backup and restore.  The iPhone and it's new update may be conflicting with something on your device.  We'd like to perform a restore and test with out any 3rd party applications or media on the phone.
    Here are the instructions for the backup and restore; http://bit.ly/1pIvHLR.
    Please share your results. Thanks.
    TrevorC_VZW
    Follow us on Twitter @VZWSupport

Maybe you are looking for

  • QT doesn't recognize file 'live64.asx.asf'

    Trying to listen to Radio 2 (dutch) using Firefox, I get error 2048: Quick Time can't use this file. I use Quick Time 7.04. iMac Intel Core Duo 20"   Mac OS X (10.4.5)  

  • How to add new currency?

    Hi, I'm new to this and can't find a solution to my problem. I'm doing some very simple invoice form, with calculations and totals, but I need to have the currency on each total, subtotal, etc. The problem is, none of the default currencies work for

  • Put my mp3 songs in my iPhone 4

    What is the correct procedure to put my mp3 songs in my iPhone 4? I have learnt that the songs are sent to iPhone thru iTunes. May I know the steps to accomplish it. Thanks!!

  • After iPod  update, my iPod won't disconnect or show up in iTunes

    I downloaded the iPod updater. I then restarted my computer, plugged in my iPod nano, and the updater popped up with a thing to click to update it. The whole time, my iPod never showed up in iTunes, but it said do not disconnect on the screen. The up

  • Crystal Reports and Logical Standby

    Hello, We built a logical standby (v 10.2.0.3). Users are trying to run Crystal Reports but are getting 'table not found' in the schema browser. It works fine on the Primary. Priv's for the user are the same on both Primary and Standby. Has anyone ha