[ESPER-810] Context partitioned by key throws NPE with partition key property in pattern filter expression Created: 03/Mar/15 Updated: 03/Mar/15 Resolved: 03/Mar/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.1 |
Fix Version/s: | 5.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Could someone kindly comment on the below? Is it allowed (and ok) to use single row functions in the stream definition while using a context partition? (Highlighted in yellow in the EPL below.) @Name('OutputEvent') create schema OutputEvent as (registration String, status String, ruleName String); @Name('PerVehicleStream') create context IndividualVehicle partition by registration from VehicleStream; @Name('FreeParkingSpot') context IndividualVehicle insert into OutputEvent select event2.registration as registration, event2.status as status, "FreeParkingSpot" as ruleName from pattern [every (event1=VehicleStream(hasExited(registration) = false) -> event2=VehicleStream(hasExited(registration) = true))]; I am asking because I get a Null pointer exception while doing the same. java.lang.NullPointerException at com.espertech.esper.epl.expression.core.ExprIdentNodeEvaluatorContext.evaluate(ExprIdentNodeEvaluatorContext.java:38) at com.espertech.esper.epl.expression.dot.ExprDotEvalStaticMethod.get(ExprDotEvalStaticMethod.java:128) at com.espertech.esper.filter.FilterParamIndexEquals.matchEvent(FilterParamIndexEquals.java:29) at com.espertech.esper.filter.FilterHandleSetNode.matchEvent(FilterHandleSetNode.java:99) |
[ESPER-809] ExprBetweenCompBigDecimal.isLowIncluded/isHighIncluded shouldn't use equals Created: 19/Feb/15 Updated: 03/Mar/15 Resolved: 19/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 5.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hi Esper Dev, I have a problem where using the between clause with BigDecimals when ExprBetweenCompBigDecimal is doing BigDecimal.equals comparison to test if Interesting this is not failing when selecting directly from a stream rather The test below should output: 10 But is outputting: 10 Can't the ExprBetweenComp implementations use the previous result of the Thanks, package espertest; import com.espertech.esper.client.*; import java.math.BigDecimal; public class EsperTestBetweenBigDecimal { public static class Bean { public Bean(BigDecimal decimal) { this.decimal = decimal; }public BigDecimal getDecimal() { return decimal; }} public static void main(String[] args) throws ConfigException { EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); EPAdministrator epAdministrator = epService.getEPAdministrator(); epAdministrator.getConfiguration().addEventType(Bean.class); epAdministrator.createEPL("create window BeanWindow.std:unique(decimal) as Bean"); epAdministrator.createEPL("insert into BeanWindow select * from Bean"); epAdministrator.createEPL("select decimal from BeanWindow where decimal between 10.0 and 20.0").addListener(new EsperTestListener()); // Interesting this works: // epAdministrator.createEPL("select decimal from Bean where decimal between 10.0 and 20.0").addListener(new EsperTestListener()); EPRuntime epRuntime = epService.getEPRuntime(); epRuntime.sendEvent(new Bean(BigDecimal.valueOf(5))); epRuntime.sendEvent(new Bean(BigDecimal.valueOf(10))); epRuntime.sendEvent(new Bean(BigDecimal.valueOf(15))); epRuntime.sendEvent(new Bean(BigDecimal.valueOf(20))); epRuntime.sendEvent(new Bean(new BigDecimal("10.000"))); epRuntime.sendEvent(new Bean(new BigDecimal("20.000"))); }public static class EsperTestListener implements UpdateListener { @Override } |
[ESPER-808] Accessing Data via Method Invocation on injected Objects Created: 05/Feb/15 Updated: 03/Mar/15 Resolved: 18/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 5.2 |
Type: | New Feature | Priority: | Minor |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperVariableMethodInvocationTest.java |
Number of attachments : | 1 |
Description |
In the current version Esper allows access to Non-Relational Data via Method Invocation, see: Polling Method Invocation Results via Iterator Currently it is only possible to invoke static methods. This is unfortunately a blocking point for any system using dependency-injection (e.g. Spring and Guice). I would be great, if method invocations would also be possible on injected objects, e.g.: select * from AssetMoveEvent, method:myLookupObject.lookupAsset(assetId); These objects would probably also need to be configured, e.g.: <lookupObject name="myLookupObject" type="com.espertech.Lookup" />
Then an object could be injected into the EPRuntime, e.g. runtime.setLookupObject("myLookupObject", obj);
I believe this would be a great enhancement to Esper, finally allowing it to be fully integrated into a dependency injection environment. |
Comments |
Comment by Thomas Bernhardt [ 05/Feb/15 ] |
EPL already has variables that can be injected and called. Variables are just not part of the method invocation syntax but that could be changed. |
Comment by Andy Flury [ 05/Feb/15 ] |
Yes, that might be a solution. Would be good to also have a way to invoke methods on non-serializable / potentially immutable objects like Spring Beans (If I'm not mistaken variables need to implement Serializable at present) |
Comment by Thomas Bernhardt [ 17/Feb/15 ] |
Variables do not need to implement Serializable. |
Comment by Andy Flury [ 18/Feb/15 ] |
Are you sure? http://esper.codehaus.org/esper-5.1.0/doc/reference/en-US/html_single/index.html#variable_eventtype states that variables need to implement Serializable. |
Comment by Thomas Bernhardt [ 18/Feb/15 ] |
In respect to setting properties of event-typed variables yes, since events are immutable. |
Comment by Andy Flury [ 18/Feb/15 ] |
So yes, back to the original comment, variables might be a solution for this JIRA. But it would be great to also have a way to invoke methods on non-serializable objects (e.g. Spring Beans) |
Comment by Thomas Bernhardt [ 18/Feb/15 ] |
Invoking methods on for example Spring beans is done via variables. When using non-constant class or event-type variables and when your EPL intends to set property values on the variable itself (i.e. "set varPageHitZero.userId"), only then must the class be Serializable. |
Comment by Thomas Bernhardt [ 18/Feb/15 ] |
changes are in "enhancements520" branch |
Comment by Andy Flury [ 19/Feb/15 ] |
Thanks Tom! I have compiled "enhancements520" and have been able to invoke a method on an injected object. However I still get below exception when trying to inject a non-serializable object, even though it is declared as constant. Please see attached test class: Exception in thread "main" com.espertech.esper.client.ConfigurationException: Failed to snapshot configuration instance through serialization : ch.algotrader.test.esper.EsperVariableMethodInvocationTest$A
at com.espertech.esper.core.service.EPServiceProviderImpl.takeSnapshot(EPServiceProviderImpl.java:789)
at com.espertech.esper.core.service.EPServiceProviderImpl.<init>(EPServiceProviderImpl.java:88)
at com.espertech.esper.client.EPServiceProviderManager.getProviderInternal(EPServiceProviderManager.java:132)
at com.espertech.esper.client.EPServiceProviderManager.getProvider(EPServiceProviderManager.java:88)
at com.espertech.esper.client.EPServiceProviderManager.getDefaultProvider(EPServiceProviderManager.java:45)
at ch.algotrader.test.esper.EsperVariableMethodInvocationTest.main(EsperVariableMethodInvocationTest.java:19)
Caused by: java.io.NotSerializableException: ch.algotrader.test.esper.EsperVariableMethodInvocationTest$A
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
at java.util.HashMap.writeObject(HashMap.java:1133)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1495)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
at com.espertech.esper.util.SerializableObjectCopier.copy(SerializableObjectCopier.java:32)
at com.espertech.esper.core.service.EPServiceProviderImpl.takeSnapshot(EPServiceProviderImpl.java:785)
... 5 more
|
Comment by Thomas Bernhardt [ 19/Feb/15 ] |
There are two ways, as per doc in "5.17.5. Class and Event-Type Variables": I think you are trying to use "Configuration" and that does not allow non-serializable. |
Comment by Andy Flury [ 19/Feb/15 ] |
Hi Tom I did not know that there was a difference between: Configuration config = new Configuration(); and admin.getConfiguration().addVariable("myObject", MyObject.class.getName(), new MyObject(), true); Using the second approach I was able to invoke a method (even inside a join) on an injected non-serializable object. Thanks |
Comment by Thomas Bernhardt [ 19/Feb/15 ] |
The "Configuration" represents only what can be put into the XML file. Its in fact a one-to-one mapping to the config XML. |
[ESPER-807] Outer join with context partitions thread safety issue Created: 04/Feb/15 Updated: 03/Mar/15 Resolved: 17/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.1 |
Fix Version/s: | 5.2 |
Type: | Bug | Priority: | Major |
Reporter: | Nick Ward | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-test-case.zip |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
Comments |
Comment by Nick Ward [ 10/Feb/15 ] |
Any luck running this and seeing the issue? |
Comment by Rainer Guessner [ 10/Feb/15 ] |
I was able to reproduce an issue. Thanks for the case. Most likely this is a lock assignment problem with the contexts and named windows. |
Comment by Thomas Bernhardt [ 10/Feb/15 ] |
The problem is that assembly nodes for outer joins are shared between context partitions however should be created for each context partition separately. You could change code to fix this issue by looking at BaseAssemblyNode and making all subclasses use threadlocals instead. The plan would be that the next release correctly uses factories for these objects. |
Comment by Thomas Bernhardt [ 11/Feb/15 ] |
The next release is in the JIRA roadmap, at the beginning or middle of March. |
Comment by Thomas Bernhardt [ 17/Feb/15 ] |
changes are in branch bugfix510 |
[ESPER-806] The type checking rejects the child types for non-bean types and insert Created: 04/Feb/15 Updated: 03/Mar/15 Resolved: 17/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.1 |
Fix Version/s: | 5.2 |
Type: | Bug | Priority: | Major |
Reporter: | Ivan Rychagov | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | test.epl |
Number of attachments : | 1 |
Description |
Validation of EPL (in attach) fails with error below: Error starting statement: Validation failed in when-not-matched (clause 1): Event type named 'IncidentWindow' has already been declared with differing column name or type information: Type by name 'IncidentWindow' in property 'event' expected event type 'Event' but receives event type 'ChildEvent' |
[ESPER-805] toEPL() generates badly formatted EPL for contained event selections Created: 03/Jan/15 Updated: 03/Mar/15 Resolved: 17/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Jonathan Heusser | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
OSX, java version "1.7.0_45" |
Number of attachments : | 0 |
Description |
Compiling a contained event selection statement as below generates wrongly formatted EPL code when converting it back to EPL using toEPL() on its EPStatementObjectModel. E.g.: Module m = engine.getEPAdministrator().getDeploymentAdmin().parse("module some.name; select * from AccountEvent[select * from wallets where currency = 'USD'];"); then iterating through the ModuleItems and compiling them EPStatementObjectModel compiled = admin.compileEPL(item.getExpression()); then compiled.toEPL() generates the string where the where keyword is missing and a where clauses have no white spaces to the from clause: "select * from AccountEvent[select * from walletscurrency="USD"]" |
Comments |
Comment by Jonathan Heusser [ 05/Jan/15 ] |
snippet above assumes AccountEvent is an available schema |
[ESPER-804] Allow Subscriber methods other than "update" Created: 22/Dec/14 Updated: 03/Mar/15 Resolved: 18/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 5.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-subscriber-method.patch |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
Would you consider attached patch that allows Subscribers methods to be named other than "update"? In projects using dependency injection (e.g. Spring) individual objects (i.e. beans) are often singletons. Up until now it is only possible to use such objects as subscribers if they provide a method named "update". Attached patch allows to define an arbitrary update method name. |
[ESPER-803] outer join with historical stream and on-clause in addition to where-clause causes incorrect result Created: 24/Nov/14 Updated: 03/Mar/15 Resolved: 17/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.1 |
Fix Version/s: | 5.2 |
Type: | Bug | Priority: | Major |
Reporter: | Nikolay Klendar | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
windows 7 |
Attachments: | testdb.sql test.java |
Number of attachments : | 2 |
Description |
I use following expression to detect address scanning: select src_ip,dst_ip,dst_port,ip from firewall.win:time(30 sec) as fw I decided to use external mysql table scanAllowed consists of ip addresses which is allowd to scan and modified my EPL to use external data I filled table scanAllowed with values 10.0.0.1, 10.0.0.2. String[] firewallPropsNames = Object[] firewallpropsTypes = {String.class,int.class,String.class,int.class,String.class}; Configuration engineConfig = new Configuration(); engineConfig.addEventType("firewall",firewallPropsNames,firewallpropsTypes); ConfigurationDBRef mysql = new ConfigurationDBRef(); mysql.setDriverManagerConnection("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/testDB", "user", "password"); mysql.setExpiryTimeCache(60, 120); engineConfig.addDatabaseReference("mysql", mysql); for (int i=0; i<100;i++){ Object [] fwEvent={"192.168.0.1",32000,"10.0.0."+i,22,"permit"}; String[] firewallPropsNames = {"src_ip", "src_port","dst_ip","dst_port","action"} ; ; ; and results wer Event received com.espertech.esper.event.map.MapEventType@110ff2b {dst_port=22, dst_ip=10.0.0.50, src_ip=192.168.0.1, ip=null}Event received com.espertech.esper.event.map.MapEventType@110ff2b {dst_port=22, dst_ip=10.0.0.50, src_ip=10.0.0.1, ip=null} the last row should not be shown because src_ip is 10.0.0.1 and this value is there in allowdScan table but if I disable caching by removing mysql.setExpiryTimeCache(60, 120); I see correct result: Event received com.espertech.esper.event.map.MapEventType@14f686d {dst_port=22, dst_ip=10.0.0.50, src_ip=192.168.0.1, ip=null} |
Comments |
Comment by Thomas Bernhardt [ 25/Nov/14 ] |
Can you please create a very simply test class and SQL that reproduces this issue. |
Comment by Nikolay Klendar [ 25/Nov/14 ] |
testClass with main method |
Comment by Nikolay Klendar [ 25/Nov/14 ] |
sql script to create table |
Comment by Nikolay Klendar [ 25/Nov/14 ] |
first run with false then with true, boolean parameter is responsible for turning on |
[ESPER-802] EsperIO CSV and CurrentTimeEvent issue Created: 24/Nov/14 Updated: 03/Mar/15 Resolved: 19/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 5.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | AbstractCoordinatedAdapter.patch EsperCsvTest.java prices.txt |
Testcase included: | yes |
Patch Submitted: |
Yes
|
Number of attachments : | 3 |
Description |
there is an issue with CurrentTimeEvents when using EsperIO CSV Please have a look at attached example class and CSV file The class basically outputs the timestamp associated with each event (CurrentTimeEvent and PriceEvent), in addition the CurrentEPTime is printed. The result looks like this: So as one can see the CurrentTimeEvent belonging to the first Event (with timestamp=2) only arrives after the first event. For that reason I my believe the correct output should look like this: TimeEvent: 0 ep time: 0 This time the TimeEvent arrives before the Event and therefore the CurrentEPTime is correct. I believe attached patch might solve the issue. |
[ESPER-801] Json renderer escape in a wrong way Created: 08/Oct/14 Updated: 16/Oct/14 Resolved: 13/Oct/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Emanuele Paterna | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
OutputValueRenderJSONString. Characher '>' is escaped using '\>'. The method is: |
[ESPER-800] Custom aggregation function with multiple parameters receives WildcardParameter instead of event Created: 22/Sep/14 Updated: 16/Oct/14 Resolved: 13/Oct/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Kaz Gwozdz | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Custom aggregation function with multiple parameters that receives wildcard as one of arguments - for example: foo(*, 100) - receives instance of WildcardParameter class instead of event. This is similar issue to |
[ESPER-799] Escaping comma character error while using socket adapter Created: 05/Sep/14 Updated: 16/Oct/14 Resolved: 14/Oct/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Major |
Reporter: | Pavel Kakhutin | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | OTCTradeEvent.java screen.png test_script.zip |
Number of attachments : | 3 |
Description |
I'm using socket adapter with CSV data format to send events from external system. I tried to use format: but it doesn't work When I start statement "select * from MyEvent" I see only "value with in field2. |
[ESPER-798] Esper concurrency and queueing Created: 31/Jul/14 Updated: 01/Aug/14 Resolved: 31/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Lawrence Mount | Assignee: | Unassigned |
Resolution: | Incomplete | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Often under high load the implementation of a collapsing queue (eg: com.lma= |
Comments |
Comment by Lawrence Mount [ 01/Aug/14 ] |
I am interpreting this as . No there is no facility/interest in collapsing currently |
[ESPER-797] Please add javadoc jar for Esper in Maven repository Created: 15/Jul/14 Updated: 13/Oct/14 Resolved: 13/Oct/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 5.0 |
Fix Version/s: | None |
Type: | Task | Priority: | Minor |
Reporter: | Dmitry Kholodilov | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Recent version of Esper (http://repository.codehaus.org/com/espertech/esper/5.0.0/) has sources.jar attached, but no javadoc.jar. It is needed by documentation tools, such as Dash. Attaching javadocs is as simple as adding plugin execution into pom.xml: <plugin> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> |
Comments |
Comment by Dmitry Kholodilov [ 15/Jul/14 ] |
Related issue (already resolved) - https://jira.codehaus.org/browse/ESPER-413 |
Comment by Thomas Bernhardt [ 13/Oct/14 ] |
Javadoc jar is too large (22MB) |
[ESPER-796] EventType Configuration Exception compiling Pojo with Collections Created: 10/Jul/14 Updated: 16/Oct/14 Resolved: 31/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.11.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Aram Openden | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Java 7 runtime |
Attachments: | esper.question.example.PojoEventTest.txt esper-test-2.zip mailing-list-example.zip |
Testcase included: | yes |
Number of attachments : | 3 |
Description |
On 7/8/2014, I submitted a question to the Epser_user Mailing list ( user@esper.codehaus.org) with the subject: " Fwd: EventType Configuration Exception compiling Pojo with Collections." I received no response. Hence, I am submitting the issue as a bug to the Esper JIRA. I am seeing an exception I get trying to compile an Esper event Configuration using a Java POJO object. This POJO contains a collection that uses the Java "bounded wildcard" syntax, making it "generic". I am attaching three sample .java files that illustrate the exception: Document.java, Note.java and PojoEventTest.java (the unit test that drives the scenario). I am using a POJO event Object in my Esper configuration. The structure of the object hierarchy is a Document may contain many Note(s). Please see the attached .mailing-list-example.zip file (and extract) to refer to the java code that generates the exception. My EPL statement is: The result is the NullPointerException shown in this stack trace: One of the main reasons our team chose Esper as the engine for our Event-processing application was that we could leverage use of existing Java POJO's from our application model. So, we prefer to leverage those existing Java POJOs, if possible. I do not know if this is expected behavior or a bug. Hoping to get some clarification, direction or get the issue fixed. |
Comments |
Comment by Thomas Bernhardt [ 11/Jul/14 ] |
can you please test against the latest version? |
Comment by Aram Openden [ 11/Jul/14 ] |
Thomas: Tested again against latest release version: 5.0.0. Same result. Please see new attachments: esper.question.example.PojoEventTest.txt and esper-test-2.zip. The .zip file contains the pom with the updated dependencies. |
[ESPER-795] Multidrectional join between two unique-window named windows join throws errors and returns spurious results. Created: 01/Jul/14 Updated: 16/Oct/14 Resolved: 13/Oct/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Major |
Reporter: | Lawrence Mount | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperUniqueIndexViolationTest.java MultidirectionalJoin.epl MultidirectionalJoinTest.java |
Testcase included: | yes |
Number of attachments : | 3 |
Description |
The following epl and junit test illustrate issues we are having with queries that join two unique windows receiving high update volumes. Symptoms are: Attached test. The unthreaded test case passes and never throws exceptions (this can be broken by enabled engine threading). |
Comments |
Comment by Lawrence Mount [ 03/Jul/14 ] |
Hi, |
Comment by Lawrence Mount [ 08/Jul/14 ] |
com.espertech.esper.epl.join.table.PropertyIndexedEventTableSingleUnique.remove(EventBean theEvent) propertyIndex.remove(key); } changed to private void remove(EventBean theEvent) { Object key = getKey(theEvent); EventBean event = propertyIndex.get(key); if (event == null ) { return; } propertyIndex.remove(key); |
Comment by Lawrence Mount [ 31/Jul/14 ] |
The same applies to multi keys and symettrical affects the PropertyIndexedEventTableSingle class |
Comment by Andy Flury [ 31/Jul/14 ] |
Hi Lawrence, we are experiencing exactly the same issue. I have attached another class that demonstrates the problem. The test fails after some time with both InboundThreading enabled and disabled. |
[ESPER-794] OSGi Manifest does not contain com.espertech.esper.epl.agg.aggregator package Created: 18/Jun/14 Updated: 16/Oct/14 Resolved: 14/Oct/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0, 4.11.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Major |
Reporter: | George Nicoll | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows, apache karaf runtime |
Number of attachments : | 0 |
Description |
Code that defines its own aggregation functions (by extending com.espertech.esper.epl.agg.aggregator.AggregationMethod) cannot be used in an OSGi container as the Manifest does not export com.espertech.esper.epl.agg.aggregator package. I can get round this by embedding the esper dependency in my referencing bundle but this is not ideal |
[ESPER-793] QualityOfService example main uses wrong provider URI Created: 13/Jun/14 Updated: 16/Oct/14 Resolved: 30/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Examples |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The main uses the wrong provider API, test cases however use the correct one. |
[ESPER-792] Dataflow is not initializing in correct order with ~16+ operators Created: 10/Jun/14 Updated: 16/Oct/14 Resolved: 30/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Blocker |
Reporter: | Matti Oikarinen | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Any. |
Number of attachments : | 0 |
Description |
Dataflow is sorting the operators to a HashSet class that is not sorted! This prevents the initialization of operators that depend on each other as output channels are not found. To reproduce the problem:
Bug is in DataFlowServiceImpl class analyzeBuildOrder function. Note: there is second bug in the sorting loop also - it does not create the order correctly. Here is a sample fix that seems to work: DependencyGraph graph = new DependencyGraph(operators.size(), true); } // Fix 1: use LinkedHashSet // seconardy sort according to the order of listing }); if (rootNodes.isEmpty()) { // circular dependency could cause this } topDownSet.addAll(rootNodes); // Ugly fix 2: invert the output as it was incorrect return inverted; |
[ESPER-791] "Route" API call with outbound threading enabled does not work Created: 03/Jun/14 Updated: 16/Oct/14 Resolved: 31/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestOutboundThreadingWithRoute.java |
Number of attachments : | 1 |
Description |
Sample code attached. |
Comments |
Comment by Thomas Bernhardt [ 03/Jun/14 ] |
The workaround is to use "sendEvent" in this specific configuration. |
[ESPER-790] IndexOutOfBoundsException if EPAdministrator.create(EPStatementObjectModel sodaStatement, String statementName) is used Created: 19/May/14 Updated: 30/Jul/14 Resolved: 30/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Test | Priority: | Minor |
Reporter: | Gabriel Pilz | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | bug, exception, workaround | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
If a statement is created Workaround: Use EPAdministrator.createEPL(String, String), where the String should be created via EPStatementObjectModel.toEPL() This was tested with versions 3.5.0, 4.11.0, 5.0.0. Method call: EPStatementObjectModel stmtModel = ... // every A -> B -> C -> D ... EPAdministrator.create(stmtModel, someString); ... sendEvent(A); sendEvent(B); sendEvent(C); sendEvent(D); // crashes The stacktrace is as follows: ERROR: com.espertech.esper.core.service.ExceptionHandlingService - Exception encountered processing statement '9' statement text 'select * from pattern [every A -> B -> C -> D' : Index: 0, Size: 0 java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at com.espertech.esper.pattern.EvalAndStateNode.generateMatchEvents(EvalAndStateNode.java:260) at com.espertech.esper.pattern.EvalAndStateNode.generateMatchEvents(EvalAndStateNode.java:242) at com.espertech.esper.pattern.EvalAndStateNode.evaluateTrue(EvalAndStateNode.java:154) at com.espertech.esper.pattern.EvalFilterStateNode.evaluateTrue(EvalFilterStateNode.java:80) at com.espertech.esper.pattern.EvalFilterStateNode.matchFound(EvalFilterStateNode.java:134) at com.espertech.esper.core.service.EPRuntimeImpl.processStatementFilterMultiple(EPRuntimeImpl.java:1212) at com.espertech.esper.core.service.EPRuntimeImpl.processMatches(EPRuntimeImpl.java:1054) at com.espertech.esper.core.service.EPRuntimeImpl.processWrappedEvent(EPRuntimeImpl.java:465) at com.espertech.esper.core.service.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:440) at com.espertech.esper.core.service.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:197) |
Comments |
Comment by Thomas Bernhardt [ 19/May/14 ] |
Please provide a test class. |
Comment by Gabriel Pilz [ 20/May/14 ] |
As I am creating the test class, I realized that this bug has nothing to do with the statementName but with the EPStatementObjectModel. I am still struggling to create a test case to reproduce this behaviour. |
[ESPER-789] com.espertech.esper.client.ConfigurationException: Failed to read schema via URL 'null' Created: 14/May/14 Updated: 23/Feb/15 Resolved: 23/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 4.11.0 |
Fix Version/s: | 4.11.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Wolfgang Huettig | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | exception | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows 7 and 8, |
Number of attachments : | 0 |
Description |
Hello, we have problems with an error in error in "esper" for some time now: java.lang.RuntimeException: com.espertech.esper.client.ConfigurationException: Failed to read schema via URL 'null' We found some posts online from people having the same problem. It seemed to have something to do with the java version. The error occurs in java versions since jdk7u40. Since then we are still running on jdk7_u15 and everything seemed to work. But lately the error happened even with this version. We are using: Are there any known issues that can lead to this error except to the java version and are there any known fixes for that problem? Thank you very much. Kind regards. Wolfgang |
Comments |
Comment by Thomas Bernhardt [ 23/Feb/15 ] |
[ESPER-788] Exception on uppercase MIN/MAX Created: 12/May/14 Updated: 16/Oct/14 Resolved: 30/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.1 |
Type: | Test | Priority: | Major |
Reporter: | Satoshi Tagomori | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Queries like 'SELECT MIN(bytes) FROM ...' occurs ASTWalkException.
It seems that "toLowerCase()" are missing in ASTLibFunctionHelper.java line 302 and 305 |
[ESPER-787] NEsper .NET: regex performance can be improved if using compiled statement Created: 25/Apr/14 Updated: 25/Apr/14 |
|
Status: | Open |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Improvement | Priority: | Major |
Reporter: | Oleksii Mandrychenko | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | 1 day | ||
Time Spent: | Not Specified | ||
Original Estimate: | 1 day |
Number of attachments : | 0 |
Description |
We can use compiled regex. Msdn recommends
The way Nesper is supposed to be use is to have limited number of statements and a lot more events. Therefore it's tolerable to spend more time compiling regular expression in a statement once, in favour of better performance gained from not interpreting regex each time we need to evaluate an event. In our observations with NEsper, compiled regex results in smaller memory footprint and smaller CPU usage when evaluating events. |
[ESPER-786] Nesper .NET: regex uses String.Format to wraps around user-defined regex Created: 25/Apr/14 Updated: 25/Apr/14 |
|
Status: | Open |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 4.11.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Oleksii Mandrychenko | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | bug, contributers-welcome, regex | ||
Remaining Estimate: | 1 day | ||
Time Spent: | Not Specified | ||
Original Estimate: | 1 day |
Number of attachments : | 0 |
Description |
Bug: Nesper uses String.Format and wraps around a user-passed regex. From source code (2 occurrences) _pattern = new Regex(String.Format("^{0}$", patternText)); There are two problems with this: 1) It is an inefficient regex, when processing 100.000 events/sec this may degrade performance for some regex An example for 2) will be: suppose I handle fraudulent transactions. I get stream of suspicious transactions that may or may not be checked. I only want to get a match on the transactions that have not been previously checked. Here is a stream of events Id | Comment --------------------- 1 | fraud 2 | fraud 3 | [checked] fraud The regex to match is (?<!checked\s*)fraud But because NEsper wraps my regex, the engine receives this ^(?<!checked\s*)fraud$ Note the start of the string ^ and end of line $ The last regex will no longer match events I am interested in. This adds much confusion, as some regex will work, whereas the other won't. Solution: Call to string format should be removed and regex left up to the user to craft. |
[ESPER-785] NEsper .NET: regular expression should not get un-escaped Created: 25/Apr/14 Updated: 25/Apr/14 |
|
Status: | Open |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 4.11.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Oleksii Mandrychenko | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | bug, contributers-welcome, regex | ||
Remaining Estimate: | 1 day | ||
Time Spent: | Not Specified | ||
Original Estimate: | 1 day |
Number of attachments : | 0 |
Description |
Nesper un-escapes regular expressions. Suppose I expected the following regex
and I want to match a number 123. The bug is that it will never match, as an actual regex that will be used by the engine will be
Sample statement:
Sample event
|
[ESPER-784] EsperIO Socket Adapter causes configuration loss when calling "initialize" Created: 18/Apr/14 Updated: 16/Oct/14 Resolved: 31/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When calling the initialize method on EPServiceProvider on a configured engine instance and when the socket io adapter is configured, the initialize causes the configuration to become empty and therefore loosing preconfigured event types. Example: Configuration configuration = new Configuration(); <esper-configuration > |
[ESPER-783] ArithmeticException big decimal divide Created: 17/Apr/14 Updated: 16/Oct/14 Resolved: 31/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperBigDecimalTest.java |
Number of attachments : | 1 |
Description |
I received the following error when using BigDecimal divide java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. This is my statement: |
Comments |
Comment by Andy Flury [ 17/Apr/14 ] |
TestClass to reproduce the problem. |
[ESPER-782] "interval" keyword in match-recognize does not allow uppercase Created: 17/Apr/14 Updated: 16/Oct/14 Resolved: 30/Jul/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When "interval" is specified as uppercase the parser does not allow that. Sample EPL: Sample exception: |
Comments |
Comment by Matthew Hall [ 17/Apr/14 ] |
FYI: The same bug happens with the max() function in my tests. So I'm not sure if there's a way to write a Unit Test which generates I really like to capitalize SQL keywords because it makes the code much easier |
[ESPER-781] Prevent accidental overwrite of Map type configuration through API Created: 27/Mar/14 Updated: 14/Apr/14 Resolved: 01/Apr/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.11.0 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When I register a Map Event type: (http://esper.codehaus.org/esper-4.11.0/doc/reference/en-US/html_single/#eventrep-map-properties) The Map passed to the configuration with field names and types is not cloned, but referenced directly. Configuration configuration = new Configuration(); //Rerun with this line removed Error: "com.espertech.esper.epl.expression.ExprValidationPropertyException: Property named 'val' is not valid in any stream" [main] DEBUG c.e.e.c.s.StatementLifecycleSvcImpl - .start Error starting statement (OK, this is a contrived example, but if I have a huge number of event types and fields then for GC reasons it may be beneficial to clear or reuse the Map passed.) |
[ESPER-780] Configuration XML of Map event type does not allow array "[]" marker for types Created: 21/Mar/14 Updated: 14/Apr/14 Resolved: 01/Apr/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.11.0 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Quick question ... e.g. This fails: I know I can do this programatically, but I'd like to have some mechanism to define the Event as a Map, with Array properties using XML configuration. For example, can I (programmatically) define a type alias for long[] (e.g. "longarrtype") and then use this in the XML? <map-property name="longarrval" class="longarrtype"/> |
[ESPER-779] NPE nested context (non-overlapping time-based+key-partitioned) managing 30 stmts Created: 12/Mar/14 Updated: 14/Apr/14 Resolved: 27/Mar/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.11.0 |
Fix Version/s: | 5.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperTestCase3.java |
Number of attachments : | 1 |
[ESPER-778] Support for context builtin properties in declared expressions Created: 11/Mar/14 Updated: 14/Apr/14 Resolved: 27/Mar/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.11.0 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Example: expression ABC {context.name}context CategorizedContext |
[ESPER-777] Passing a stream as a parameter to nested declared expressions Created: 05/Mar/14 Updated: 14/Apr/14 Resolved: 27/Mar/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 5.0 |
Type: | Test | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperTest12.java |
Number of attachments : | 1 |
[ESPER-776] Match_recognize shows A.size() as null in measures, unless A itself is selected as a measure as well. Created: 26/Feb/14 Updated: 14/Apr/14 Resolved: 27/Mar/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 5.0 |
Type: | Bug | Priority: | Major |
Reporter: | Ory Henn | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperIsolatedTest.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
The following query works, and returns count_b as expected. select * from Event match_recognize ( |
[ESPER-775] NEsper .NET : Prioritized execution Created: 07/Feb/14 Updated: 11/Feb/14 |
|
Status: | Open |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | NEsper .NET 4.6 |
Fix Version/s: | None |
Type: | Test | Priority: | Major |
Reporter: | Alex Gillula | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestMultipleStatements.cs |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
Problem description: Two statements, with the exact same statement text, are generating different outputs when EngineDefaults.ExecutionConfig.IsPrioritized is set to true and the statements don’t contain an @Priority hint. When @Priority hints (of different priority) are added, the output from the two statements is the same. The attached file includes the test cases I created: IsPrioritized_TRUE_Condition_TRUE_PrioritySpecified_TRUE (GOOD) IsPrioritized_FALSE_Condition_TRUE_PrioritySpecified_TRUE (GOOD) |
Comments |
Comment by Alex Gillula [ 07/Feb/14 ] |
To clarify, we're using NEsper .NET 4.8 (the closest available in the "Affects Version" drop-down was 4.6). |
Comment by Thomas Bernhardt [ 07/Feb/14 ] |
try the newest version |
Comment by Alex Gillula [ 10/Feb/14 ] |
We've confirmed that this bug still exists in the latest .NET version 4.10.1. |
[ESPER-774] Support for property name to be used on an object returned by a single-row function Created: 27/Jan/14 Updated: 27/Mar/14 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.11.0 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following is not yet supported: public static SupportBean callIt(SupportBean sb) { return sb; }========== |
[ESPER-773] Improve type recognition for non-POJO event classes that implement an interface providing a generic typed getter Created: 09/Jan/14 Updated: 14/Apr/14 Resolved: 20/Jan/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.11.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have pre-existing code that I need to integrate with, which defines several classes which implement an interface Identifiable: public static interface Identifiable<T> { T getId(); }The different classes have different types of identifier and I need to join them to different data. A simple example is attached below. My problem is that Esper does not use the generic type parameters to compute the type of the "id" property. For example: Class Node implements Identifiable<String> Should have an "id" property of type String. This stackoverflow question and answer provides a solution to resolving the generic type arguments: http://stackoverflow.com/questions/4876380/generics-and-java-beans-introspector |
Comments |
Comment by Thomas Bernhardt [ 20/Jan/14 ] |
because of type erasure its not possible to determine the type |
[ESPER-772] ClassCastException for method invocation on a property that is itself an event Created: 06/Jan/14 Updated: 06/Jan/14 Resolved: 06/Jan/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have a bean "Node" which is associated with a window and joined to another bean "Data". When I try to invoke the a method on the "Node" with a parameter of type "Data": public String compute(Data data) { return id + data.getValue(); }With the query: select node.id, data.nodeId, data.value, node.compute(data) from NodeDataWindow I get the following ClassCastException: ERROR 23Dec 09:27:00.825 [main] ExceptionHandlingService Exception encountered processing statement '60368b01-bd35-446f-b8d9-9da9b5a8647f' statement text 'select node.id, data.nodeId, data.value, node.compute(data) from NodeDataWindow' : com.espertech.esper.event.bean.BeanEventBean cannot be cast to espertest.EsperTest$Node java.lang.ClassCastException: com.espertech.esper.event.bean.BeanEventBean cannot be cast to espertest.EsperTest$Node at espertest.EsperTest$Node$$FastClassByCGLIB$$287ce4f2.invoke(<generated>) at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) at com.espertech.esper.epl.expression.ExprDotMethodEvalNoDuck.evaluate(ExprDotMethodEvalNoDuck.java:51) at com.espertech.esper.epl.expression.ExprDotEvalRootChild.evaluateChain(ExprDotEvalRootChild.java:78) at com.espertech.esper.epl.expression.ExprDotEvalRootChild.evaluate(ExprDotEvalRootChild.java:51) at com.espertech.esper.epl.core.eval.EvalSelectNoWildcardMap.process(EvalSelectNoWildcardMap.java:48) at com.espertech.esper.epl.core.SelectExprResultProcessor.process(SelectExprResultProcessor.java:52) at com.espertech.esper.epl.core.ResultSetProcessorHandThrough.getSelectEventsNoHaving(ResultSetProcessorHandThrough.java:107) at com.espertech.esper.epl.core.ResultSetProcessorHandThrough.processViewResult(ResultSetProcessorHandThrough.java:72) at com.espertech.esper.epl.view.OutputProcessViewDirect.update(OutputProcessViewDirect.java:45) at com.espertech.esper.view.ViewSupport.updateChildren(ViewSupport.java:115) at com.espertech.esper.epl.named.NamedWindowConsumerView.update(NamedWindowConsumerView.java:91) at com.espertech.esper.epl.named.NamedWindowServiceImpl.processHandle(NamedWindowServiceImpl.java:454) at com.espertech.esper.epl.named.NamedWindowServiceImpl.processDispatches(NamedWindowServiceImpl.java:264) at com.espertech.esper.epl.named.NamedWindowServiceImpl.dispatch(NamedWindowServiceImpl.java:210) at com.espertech.esper.core.service.EPRuntimeImpl.processThreadWorkQueueFront(EPRuntimeImpl.java:821) at com.espertech.esper.core.service.EPRuntimeImpl.processThreadWorkQueue(EPRuntimeImpl.java:773) at com.espertech.esper.core.service.EPRuntimeImpl.processWrappedEvent(EPRuntimeImpl.java:476) at com.espertech.esper.core.service.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:437) at com.espertech.esper.core.service.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:196) at espertest.EsperTest.sendEvent(EsperTest.java:99) at espertest.EsperTest.main(EsperTest.java:83) I tried making the method take a parameter of type BeanEventBean: public String compute(BeanEventBean data) { return id + data.get("value"); }But then I get a type error: Exception in thread "main" com.espertech.esper.client.EPStatementException: Error starting statement: Failed to resolve method 'compute': Could not find enumeration method, date-time method or instance method named 'compute' in class 'espertest.EsperTest$Node' with matching parameter number and expected parameter type(s) 'Data' (nearest match found was 'compute' taking type(s) 'BeanEventBean') [select node.id, data.nodeId, data.value, node.compute(data) from NodeDataWindow] at com.espertech.esper.core.service.StatementLifecycleSvcImpl.startInternal(StatementLifecycleSvcImpl.java:637) at com.espertech.esper.core.service.StatementLifecycleSvcImpl.start(StatementLifecycleSvcImpl.java:595) at com.espertech.esper.core.service.StatementLifecycleSvcImpl.createAndStart(StatementLifecycleSvcImpl.java:137) at com.espertech.esper.core.service.EPAdministratorImpl.createEPLStmt(EPAdministratorImpl.java:117) at com.espertech.esper.core.service.EPAdministratorImpl.createEPL(EPAdministratorImpl.java:66) at espertest.EsperTest.main(EsperTest.java:79) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Caused by: com.espertech.esper.epl.expression.ExprValidationException: Failed to resolve method 'compute': Could not find enumeration method, date-time method or instance method named 'compute' in class 'espertest.EsperTest$Node' with matching parameter number and expected parameter type(s) 'Data' (nearest match found was 'compute' taking type(s) 'BeanEventBean') at com.espertech.esper.epl.expression.ExprDotNodeUtility.getChainEvaluators(ExprDotNodeUtility.java:172) at com.espertech.esper.epl.expression.ExprDotNode.validate(ExprDotNode.java:290) at com.espertech.esper.epl.expression.ExprNodeUtility.getValidatedSubtreeInternal(ExprNodeUtility.java:189) at com.espertech.esper.epl.expression.ExprNodeUtility.getValidatedSubtree(ExprNodeUtility.java:151) at com.espertech.esper.epl.core.ResultSetProcessorFactoryFactory.assignSelectClauseNames(ResultSetProcessorFactoryFactory.java:450) at com.espertech.esper.epl.core.ResultSetProcessorFactoryFactory.getProcessorPrototype(ResultSetProcessorFactoryFactory.java:107) at com.espertech.esper.core.start.EPStatementStartMethodSelectUtil.prepare(EPStatementStartMethodSelectUtil.java:278) at com.espertech.esper.core.start.EPStatementStartMethodSelect.startInternal(EPStatementStartMethodSelect.java:51) at com.espertech.esper.core.start.EPStatementStartMethodBase.start(EPStatementStartMethodBase.java:53) at com.espertech.esper.core.service.StatementLifecycleSvcImpl.startInternal(StatementLifecycleSvcImpl.java:625) ... 10 more Caused by: com.espertech.esper.epl.expression.ExprValidationException: Failed to resolve method 'compute': Could not find enumeration method, date-time method or instance method named 'compute' in class 'espertest.EsperTest$Node' with matching parameter number and expected parameter type(s) 'Data' (nearest match found was 'compute' taking type(s) 'BeanEventBean') at com.espertech.esper.epl.expression.ExprDotNodeUtility$2.handle(ExprDotNodeUtility.java:233) at com.espertech.esper.epl.expression.ExprNodeUtility.resolveMethodAllowWildcardAndStream(ExprNodeUtility.java:637) at com.espertech.esper.epl.expression.ExprDotNodeUtility.getValidateMethodDescriptor(ExprDotNodeUtility.java:237) at com.espertech.esper.epl.expression.ExprDotNodeUtility.getChainEvaluators(ExprDotNodeUtility.java:149) ... 19 more Caused by: com.espertech.esper.epl.core.EngineImportException: Could not find enumeration method, date-time method or instance method named 'compute' in class 'espertest.EsperTest$Node' with matching parameter number and expected parameter type(s) 'Data' (nearest match found was 'compute' taking type(s) 'BeanEventBean') at com.espertech.esper.epl.core.EngineImportServiceImpl.convert(EngineImportServiceImpl.java:519) at com.espertech.esper.epl.core.EngineImportServiceImpl.resolveMethod(EngineImportServiceImpl.java:484) at com.espertech.esper.epl.core.MethodResolutionServiceImpl.resolveMethod(MethodResolutionServiceImpl.java:106) at com.espertech.esper.epl.expression.ExprNodeUtility.resolveMethodAllowWildcardAndStream(ExprNodeUtility.java:627) ... 21 more Caused by: com.espertech.esper.epl.core.EngineNoSuchMethodException: Unknown method Node.compute(class espertest.EsperTest$Data) at com.espertech.esper.util.MethodResolver.resolveMethod(MethodResolver.java:220) at com.espertech.esper.epl.core.EngineImportServiceImpl.resolveMethod(EngineImportServiceImpl.java:480) ... 23 more Without the query calling compute the correct data is output, so the join is working correctly. I’ve tried reducing the complexity of the test but this seems to be the simplest case. I’ve tried making "compute" a static method taking a Node and Data with similar results. I’ve tried defining two method one taking "Data" and one taking an "BeanEventBean" but the "Data" on is looked up at query compile time and still used at run time, as expected. |
Comments |
Comment by Thomas Bernhardt [ 06/Jan/14 ] |
Workaround is to use a user-defined function. |
[ESPER-771] Allow subqueries that select a single column that it itself an event to provide enumerable events and insert-into compatible prop Created: 16/Dec/13 Updated: 06/Jan/14 Resolved: 29/Dec/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.10.0 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hi all: create schema A (symbol string) Error starting statement: Event type named 'C' has already been declared with differing column name or type information: Type by name 'C' in property 'a' expected java.lang.String but receives java.util.Map My questions: Plus: |
[ESPER-770] Improve compatibility checking when named window event gets inserted into stream of same-as type (Map and ObjectArray only) Created: 16/Dec/13 Updated: 06/Jan/14 Resolved: 29/Dec/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hi Esper users, I have a stream of "Node" events where each Node has an id and an optional parent id. I’m trying to maintain a window which is a left outer join of a Node with its optional parent Node. The parent event is not necessarily received before the child event. I would like a query that outputs an JoinedNode which includes the node and parent. A event JoinedNode should be produced with no parent if the parent has not been received yet and should update once the parent is received. The following EPL queries work fine ONLY if I define Node and JoinedNode as POJOs. create window NodeWindow.std:unique(id) as Node insert into NodeWindow select * from Node create window JoinedNodeWindow.std:unique(node.id) as JoinedNode insert into JoinedNodeWindow select * from JoinedNode insert into JoinedNode select node, parent from NodeWindow as node left outer join NodeWindow as parent on node.parentId = parent.id If I try to defined them with create schema: create schema Node(id string, parentId string, data string) create schema JoinedNode(node Node, parent Node) or using "addEventType(String, Map)" I get an error when compiling the "insert into JoinedNode…" statement above: Caused by: com.espertech.esper.event.EventAdapterException: Event type named 'JoinedNode' has already been declared with differing column name or type information: Type by name 'JoinedNode' in property 'node' expected event type 'Node' but receives event type 'NodeWindow' I would have thought that the event type NodeWindow would be compatible with Node since NodeWindow is defined "as Node". This seems to be the case when I use POJOs. What am I doing wrong? I’ve attached my code below. There is a boolean useBeans which can switch between the two modes. Thanks for any help in advance, From Richard. import com.espertech.esper.client.EPAdministrator; import com.espertech.esper.client.EPRuntime; import com.espertech.esper.client.EPServiceProvider; import com.espertech.esper.client.EPServiceProviderManager; import com.espertech.esper.client.EPStatement; import com.espertech.esper.client.EventBean; import com.espertech.esper.client.StatementAwareUpdateListener; import com.tradingscreen.toolbelt.config.ConfigException; import java.util.HashMap; import java.util.Map; public class EsperTest { public static class Node { public String id; public String parentId; public String data; public Node(Map<String, Object> event) { id = (String) event.get("id"); parentId = (String) event.get("parentId"); data = (String) event.get("data"); }public String getId() { return id; }public String getParentId() { return parentId; }public String getData() { return data; }@Override public String toString() { return id + " data=" + data; }} public static class JoinedNode { public Node node; public Node parent; public Node getNode() { return node; }public void setNode(Node node) { this.node = node; }public Node getParent() { return parent; }public void setParent(Node parent) { this.parent = parent; }} public static void main(String[] args) throws ConfigException { EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); EPAdministrator epAdministrator = epService.getEPAdministrator(); boolean useBeans = false; if (useBeans) { epAdministrator.getConfiguration().addEventType(Node.class); epAdministrator.getConfiguration().addEventType(JoinedNode.class); }else { epAdministrator.createEPL("create schema Node(id string, parentId string, data string)"); epAdministrator.createEPL("create schema JoinedNode(node Node, parent Node)"); }epAdministrator.createEPL("create window NodeWindow.std:unique(id) as Node"); epAdministrator.createEPL("insert into NodeWindow select * from Node"); addListener(epAdministrator.createEPL("create window JoinedNodeWindow.std:unique(node.id) as JoinedNode")); epAdministrator.createEPL("insert into JoinedNodeWindow select * from JoinedNode"); epAdministrator.createEPL("insert into JoinedNode select node, parent from NodeWindow as node left outer join NodeWindow as parent on node.parentId = parent.id"); // Node with no parent System.out.println("Adding 1"); Map<String, Object> event = new HashMap<>(); event.put("id", "1"); sendEvent(epService.getEPRuntime(), event, useBeans); // Node with already seen parent System.out.println("Adding 2"); event = new HashMap<>(); event.put("id", "2"); event.put("parentId", "1"); sendEvent(epService.getEPRuntime(), event, useBeans); // Node with not yet seen parent System.out.println("Adding 3"); event = new HashMap<>(); event.put("id", "3"); event.put("parentId", "4"); sendEvent(epService.getEPRuntime(), event, useBeans); // Parent for previous node System.out.println("Adding 4"); event = new HashMap<>(); event.put("id", "4"); event.put("data", "x"); sendEvent(epService.getEPRuntime(), event, useBeans); // Join to same parent System.out.println("Adding 5"); event = new HashMap<>(); event.put("id", "5"); event.put("parentId", "4"); sendEvent(epService.getEPRuntime(), event, useBeans); // Parent for previous node System.out.println("Updating 4"); event = new HashMap<>(); event.put("id", "4"); event.put("data", "y"); sendEvent(epService.getEPRuntime(), event, useBeans); } private static void sendEvent(EPRuntime epRuntime, Map<String, Object> event, boolean useBeans) { if (useBeans) { epRuntime.sendEvent(new Node(event)); }else { epRuntime.sendEvent(event, "Node"); }} public static void addListener(EPStatement statement) { statement.addListener(new StatementAwareUpdateListener() { @Override public void update(EventBean[] newEvents, EventBean[] oldEvents, EPStatement statement, EPServiceProvider epServiceProvider) { System.out.println(" statement: " + statement.getName() + " " + statement.getText()); System.out.println(" new: " + (newEvents == null ? "null" : "events " + newEvents.length)); print(newEvents); System.out.println(" old: " + (oldEvents == null ? "null" : "events " + oldEvents.length)); print(oldEvents); }private void print(EventBean[] events) { if (events != null) { for (EventBean eventBean : events) { System.out.print(" type = " + eventBean.getEventType().getName()); for (String property : eventBean.getEventType().getPropertyNames()) { System.out.print(" " + property + " = " + eventBean.get(property)); }System.out.println(); } } } }); } } |
[ESPER-769] Issue evaluating nested enumeration Created: 10/Dec/13 Updated: 06/Jan/14 Resolved: 10/Dec/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I faced issue with nested collection in Esper. I have model like this: myClass3 { String value; }myClass2 { Set<myClass3> class2Value; }myClass { Set<myClass2> class1Value; }and try to use query like: select * from myClass where myClass.class1value.anyOf(x=>x.class2Value.anyOf(y=>y.value like 'string')) This compiles fine but fails to evaluate correctly. |
[ESPER-768] Improve standard deviation to use Knuth's Created: 15/Nov/13 Updated: 06/Jan/14 Resolved: 18/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
read up on http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance |
[ESPER-767] Support for tick-escape in select-clause column name Created: 14/Nov/13 Updated: 06/Jan/14 Resolved: 18/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Try this: create schema Test(`order` int); |
[ESPER-766] Allow enumeration method in pattern filter to use pattern tagged events as input Created: 11/Nov/13 Updated: 06/Jan/14 Resolved: 02/Dec/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I suggest enumeration methods support tagged-value in pattern as a new kind of input. We use tagged-value as single value in pattern, and if we can use tagged-value as a collection it will very convenient. Because sometimes a following event will be matched only if it's properties have some relationship with preceding values(not different tags but same tag with repeated values). And i think that enumeration method only take values in current run of sub-expression, not entire values in whole lifecycle. Examples: Input stream: 2, BarEvent2 {value=2} 3, StopEvent1{} 4, BarEvent3 {value=1} 5, BarEvent4 {value=4}6, BarEvent5 {value=5}7, BarEvent6 {value=1}8, BarEvent7 {value=3}9, StopEvent2 {} 11, BarEvent9 {value=10}Pattern 1: Output: match 2, b={BarEvent3,BarEvent4} match 3, b={BarEvent5,BarEvent6} match 4, b={BarEvent7,BarEvent8} Pattern 2: select b,c from pattern [ every ( ([2] b= BarEvent) -> c= BarEvent(value> b.max(i=>i.value) ) ) ] Output: match 1: b={BarEvent1,BarEvent2} , c=BarEvent4 , c=BarEvent8 Pattern 3: , c=BarEvent4 , c=BarEvent9 Best regards |
[ESPER-765] Context declaration with @Priority causes first event to arrive twice Created: 03/Nov/13 Updated: 06/Jan/14 Resolved: 02/Dec/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample EPL: input events are: {symbol=A,value=1}expected output is: actual output is: context c1 {id=1, symbol=A, name=C1, value=1} =========== code |
[ESPER-764] XML Schema loading fails on Ubuntu 64 bit Java 7 update 45 Created: 01/Nov/13 Updated: 04/Dec/14 Resolved: 04/Dec/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 5.1, Esper wishlist |
Type: | Test | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestSchemaRead.java |
Number of attachments : | 1 |
Description |
The XSLoader returns null even for the simplest schema. Stack: Exception in thread "main" com.espertech.esper.client.ConfigurationException: Failed to read schema via URL 'data/AutoIdPmlCore.xsd' |
Comments |
Comment by Thomas Bernhardt [ 01/Nov/13 ] |
It works with Java 7 update 25. |
Comment by Thomas Bernhardt [ 27/Nov/13 ] |
Attached Java class loads a schema from a string using just Java APIs without Esper dependency, for testing. |
Comment by Holger Hoffstätte [ 02/Dec/13 ] |
Might be related to: http://docs.oracle.com/javase/tutorial/jaxp/limits/index.html |
Comment by Thomas Bernhardt [ 02/Dec/13 ] |
Inner exception reported to the DOM error handler: |
Comment by Thomas Bernhardt [ 04/Dec/14 ] |
Related JDK bug: https://bugs.openjdk.java.net/browse/JDK-8029837 |
[ESPER-763] Allow on-merge assignment of event-typed property Created: 30/Oct/13 Updated: 06/Jan/14 Resolved: 26/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
create schema Composite as (x int, y int); on B e The above is not allowed. However a function can be called in the set such as "set somefunc(c, e)" as a workaround. |
[ESPER-762] Keyed segmented context with match recognize and "prev" in define-clause causes first event to not evaluate Created: 19/Oct/13 Updated: 06/Jan/14 Resolved: 02/Dec/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperTest1.java |
Number of attachments : | 1 |
Description |
I have a problem when use context with match_recognize. statements are: expected output is: {symbol=A,r1_value=3,r2_value=5} {symbol=B,r1_value=3,r2_value=5}actual output is:{symbol=B,r1_value=3,r2_value=5} {symbol=A,r1_value=3,r2_value=5} is missing And this one works fine |
[ESPER-761] On-Demand query inserting row into named window that contains an enumeration throws NPE Created: 18/Oct/13 Updated: 06/Jan/14 Resolved: 26/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I believe I have found a defect in Esper 4.10.0. See the third line here: // create schema and window // insert this make esper to throw NPE: com.espertech.esper.client.EPStatementException: Error executing statement: null [insert into CurrentAccessMode select java.nio.file.AccessMode.READ as mode] However if I replace that line with parametrized query like this: EPOnDemandPreparedQueryParameterized query = epServiceProvider.getEPRuntime().prepareQueryWithParameters("insert into CurrentMode select ? as mode"); query.setObject(1, java.nio.file.AccessMode.READ); epServiceProvider.getEPRuntime().executeQuery(query); It works fine. As you can see there is some kind of workaround but I would like to add this static insert into statement to my .epl file instead of mixing it with java code. |
[ESPER-760] Named window consumer able to distinguish between events expired from data window and events updated via merge/update Created: 15/Oct/13 Updated: 26/Nov/13 Resolved: 26/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 15/Oct/13 ] |
EPL 1 : EPL 2 : EPL 3 : The desired outcome is that the listener for EPL4 only receives those events expired from the data window and does not receive the events that an update removes from the data window. |
Comment by Thomas Bernhardt [ 26/Nov/13 ] |
Can be addressed already laying out the EPL a little differently |
[ESPER-759] Pattern with not-operator controlled by repeat ([n]) does not turn repeat to false Created: 12/Oct/13 Updated: 06/Jan/14 Resolved: 25/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | SequenceTest.java |
Number of attachments : | 1 |
Description |
Sample EPL: =========== I am trying to find pairs of “desired†events that arrive sequentially, without “undesired†events arriving in between. Events with p=P1 are desired, while events with p=P2 are undesired. The EPL I am using is: select * from pattern [every [2] (e = Event(p='P1') and not Event(p='P2'))] Input events are: at time t0 = 0 seconds, an event arrives: event E1 {p='P1'}at time t1 = 1 seconds, an event arrives: event E2{p='P1'} at time t2 = 2 seconds, an event arrives: event E3 {p='P1'}at time t3 = 3 seconds, an event arrives: event E4{p='P2'} at time t4 = 4 seconds, an event arrives: event E5{p='P1'} at time t5 = 5 seconds, an event arrives: event E6 {p='P1'}Expected output is: at time t1 = 1 seconds: output event {E1,E2}at time t5 = 5 seconds: output event {E5,E6} Actual output is: at time t1 = 1 seconds: output event {E1,E2} It seems that the pattern stops matching after it reaches undesired event E4 {p=’P2’}, and so only pair {E1,E2}is fired. This issue looks similar to http://jira.codehaus.org/browse/ESPER-112, however this was fixed in 1.10 and I’m using version 4.7.0. Attached is a test example that demonstrates the problem. |
Comments |
Comment by Thomas Bernhardt [ 12/Oct/13 ] |
Workaround: use match-recognize instead, which has immediately-followed semantics |
[ESPER-758] Thread safety issue with contained-event selection Created: 09/Oct/13 Updated: 06/Jan/14 Resolved: 02/Dec/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Toshihiro Nishimura | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When contained-event selection is used in a statement, an instance of com.espertech.esper.epl.property.PropertyEvaluatorAccumulative is created. When input events are processed in multi-threaded envirionment (e.g. using inbound threading), one instance of PropertyEvaluatorAccumulative is used for a statement, and getAccumulative method and populateEvents method are called from multiple threads. As a result, it is possible that the data of eventsPerStream[0] and eventsPerStream[1] are origined from different input events (and some contained events are missing). A simple way to fix this problem is to mark the getAccumulative method as synchronized, it may affect the performance. |
[ESPER-757] VDW callback on consuming rstream events Created: 04/Oct/13 Updated: 06/Jan/14 Resolved: 18/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Improvement | Priority: | Major |
Reporter: | David Dreyfus | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a statement starts/stops consuming VDW rstream events, let VDW know. For some virtual data windows, wrapping the events into beans and placing them on the output stream is time-consuming. If the VDW knew that there were no consumers of the window's rstream, the objects could be silently dropped within incurring the performance penalty. |
[ESPER-756] NPE during destroy() when using inbound thread pool and when not waiting for pool to empty Created: 01/Oct/13 Updated: 06/Jan/14 Resolved: 27/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestNPEOnDestroy.java |
Number of attachments : | 1 |
Description |
workaround if to wait for the pool to empty before invoking destroy |
[ESPER-755] Allow hint RECLAIM_GROUP_AGED for grouped-window to be provided variable Created: 01/Oct/13 Updated: 26/Nov/13 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For group-by aggregation, the hint parameter can already be provided by a variable |
[ESPER-754] Class that extends class triggers two events when named window declared for both child and parent class Created: 01/Oct/13 Updated: 06/Jan/14 Resolved: 18/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.10.0 |
Fix Version/s: | 4.11.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | SimpleHierarchyTesting.java |
Number of attachments : | 1 |
[ESPER-753] Use of Reserved keyword as property name in (schema-provided) XML event Created: 20/Aug/13 Updated: 06/Jan/14 Resolved: 26/Nov/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Test | Priority: | Minor |
Reporter: | Toshihiro Nishimura | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | XMLPropTest.java |
Number of attachments : | 1 |
Description |
Reserved keyword which is acceptable as property name can be used as property name, but when changed some letter(s) to upper case it can't be used as property name in schema-provided XML events. select count from SensorEvent This rule works fine with following event. <?xml version="1.0" encoding="UTF-8"?> But, when some of letter(s) in "count" is changed to upper-case, e.g. "Count", "cOunt", I get following exception. Exception in thread "main" com.espertech.esper.client.EPStatementException: Error starting statement: Property named 'count' is not valid in any stream (did you mean 'Count'?) [select Count from SensorEvent] When I tried "Count" property with no-schema-provided XML event, it does not throw exception but it seems that the property name "Count" is interpreted as "count". Attached is a sample program which throws the exception above. |
Comments |
Comment by Thomas Bernhardt [ 23/Aug/13 ] |
"Count" is also an SQL keyword, thus likely to need to be escaped |
Comment by Thomas Bernhardt [ 05/Sep/13 ] |
Property names are always case-sensitive. Without a schema the behavior is entirely different as there is no way to check property names and types. |
Comment by Toshihiro Nishimura [ 06/Sep/13 ] |
This problem is when an XML schema is provided. Please watch the error message carefully. > Property named 'count' is not valid in any stream (did you mean 'Count'?) [select Count from SensorEvent] In the EPL statement (and in the XML schema) property named 'Count' (starting with upper-case 'C') is used, but the error message says "Property named 'count'" (starting with lower-case 'c'). |
Comment by Toshihiro Nishimura [ 12/Sep/13 ] |
It was not only a matter of XML event. As described in "Appendix B. Reserved Keywords" of "Esper Reference", This works well, and the following also works: insert into MyOutput select last, count as count from MyEvent I expect the second statement produces an error at createEPL, but it does not. Moreover, I tested the following: This produces the following error message: The property "Last" is interpreted as "last". |
[ESPER-752] @Drop annotation with context: First event not dropped Created: 07/Aug/13 Updated: 09/Sep/13 Resolved: 25/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TheFirstEventInAContextIsntDropped.java |
Number of attachments : | 1 |
[ESPER-751] StackOverflow when routing new event during high volume processing Created: 06/Aug/13 Updated: 09/Sep/13 Resolved: 25/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Steve Ashton | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | OverflowEsper.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
During high-volume processing, I have seen stackoverflow errors result when an UpdateListener routes a new event to Esper. The JVM stack size can be increased, but that only delays the issue. |
Comments |
Comment by Thomas Bernhardt [ 07/Aug/13 ] |
The "route" method is only intended for use by extension code and not for sending events into the engine, the "sendEvent" method should be used by line 70. |
Comment by Steve Ashton [ 07/Aug/13 ] |
Using sendEvent() produces a StackOverflowError as well. On a side note, I had also tried sendEvent() earlier but switched to route() based on a solution patterns suggestion: http://esper.codehaus.org/tutorials/solution_patterns/solution_patterns.html#troubleshooting-3
|
Comment by Steve Ashton [ 07/Aug/13 ] |
I just realized which line you were referring to. The route() was not intended to be called in the for loop. I was seeing the stackoverflow in my app code even when using sendEvent(). I'll work on an updated test case to correctly demonstrate the issue. |
Comment by Steve Ashton [ 08/Aug/13 ] |
I've added a new test case which demonstrates the stackoverflow for both sendEvent() and route() being called from an UpdateListener. |
Comment by Steve Ashton [ 12/Aug/13 ] |
Upgraded to Major based on newer TestCase. Please review and re-prioritize as necessary. |
Comment by Thomas Bernhardt [ 12/Aug/13 ] |
It is not supported to invoke "sendEvent" from an update listener. Can the test case be cleaned to only contains supported API calls and one of the two classes be removed please? |
Comment by Steve Ashton [ 12/Aug/13 ] |
Updated test case: demonstrates stackoverflow when route() is called in UpdateListener. Also removed prior (no longer valid) test case attachments. |
[ESPER-750] @audit miscounts pattern instances with "not" Created: 25/Jul/13 Updated: 09/Sep/13 Resolved: 25/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Joao Duarte | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
RHEL, Java 1.7.0 |
Number of attachments : | 0 |
Description |
In a simple pattern every a=A -> (timer:interval(10) and not A) with @Audit('pattern-instances') and sending As every 1 second, the (not A) pattern keeps increasing while others stay at 1-2. So I'm not sure if a) the pattern instances are actually increasing or b) @audit is counting erroneously. This is better expressed in this gist: https://gist.github.com/jsvd/7d1c50042a2be775433a If the problem is b) it's a minor thing, if a) then it's serious. |
[ESPER-749] split stream with "output all" not working with prepared statement Created: 17/Jul/13 Updated: 09/Sep/13 Resolved: 25/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Sebastian Lauth | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | OutputAllTest.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
For split-stream syntax, it seems that "output all" does not work in combination with prepared statements. Simple test case attached. |
[ESPER-748] create schema fails with fully qualified property type name Created: 18/Jun/13 Updated: 09/Sep/13 Resolved: 04/Sep/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Vitamin C | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following code fails with exception: main.java String epl = "create objectarray schema Foo(ts java.sql.Timestamp)" EPServiceProviderManager .getDefaultProvider() .getEPAdministrator() .getDeploymentAdmin() .parseDeploy(epl); The exception text as follows: Caused by: com.espertech.esper.client.EPStatementSyntaxException: Incorrect syntax near '.' expecting a closing parenthesis ')' but found a dot '.' at line 1 column 37 [create objectarray schema Foo(ts java.sql.Timestamp)] at com.espertech.esper.epl.parse.ExceptionConvertor.convertStatement(ExceptionConvertor.java:40) at com.espertech.esper.epl.parse.ParseHelper.parse(ParseHelper.java:121) at com.espertech.esper.core.service.EPAdministratorHelper.compileEPL(EPAdministratorHelper.java:117) at com.espertech.esper.core.service.EPAdministratorHelper.compileEPL(EPAdministratorHelper.java:89) at com.espertech.esper.core.service.EPAdministratorImpl.compileEPL(EPAdministratorImpl.java:215) at com.espertech.esper.core.deploy.EPDeploymentAdminImpl.deployInternal(EPDeploymentAdminImpl.java:136) |
Comments |
Comment by Thomas Bernhardt [ 23/Aug/13 ] |
"sql" is a reserved keyword |
Comment by Vitamin C [ 02/Sep/13 ] |
What's your suggestion then? How can I reference types from java.sql namespace? |
Comment by Thomas Bernhardt [ 02/Sep/13 ] |
Add "java.sql" to imports and just specify "Timestamp" |
Comment by Vitamin C [ 02/Sep/13 ] |
This doesn't work either: foo.epl import java.sql.Timestamp;
create objectarray schema Foo(ts Timestamp);
leads to Caused by: com.espertech.esper.client.EPException: Nestable type configuration encountered an unexpected property type name 'Timestamp' for property 'ts', expected java.lang.Class or java.util.Map or the name of a previously-declared Map or ObjectArray type at com.espertech.esper.event.EventTypeUtility.getNestableProperties(EventTypeUtility.java:415) at com.espertech.esper.event.BaseNestableEventType.<init>(BaseNestableEventType.java:91) at com.espertech.esper.event.arr.ObjectArrayEventType.<init>(ObjectArrayEventType.java:34) at com.espertech.esper.event.EventAdapterServiceImpl.addNestableObjectArrayType(EventAdapterServiceImpl.java:535) at com.espertech.esper.event.EventTypeUtility.createNonVariantType(EventTypeUtility.java:1035) at com.espertech.esper.core.start.EPStatementStartMethodCreateSchema.handleCreateSchema(EPStatementStartMethodCreateSchema.java:62) |
Comment by Thomas Bernhardt [ 02/Sep/13 ] |
try importing the package "java.sql.*", not the class itself |
Comment by Vitamin C [ 03/Sep/13 ] |
Importing java.sql.* changes nothing; exception reproduces. |
[ESPER-747] Cron timer is skipping months Created: 21/May/13 Updated: 09/Sep/13 Resolved: 25/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Chris Myzie | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
64bit Linux, OpenJDK 7 |
Attachments: | Main.java Main.java |
Testcase included: | yes |
Number of attachments : | 2 |
Description |
When I use a pattern that should trigger once per month like pattern [ every timer:at(0, 17, lastweekday, *, *) ] it skips some months. For example, in the output of the attached test case, one can see it scheduling 59 days (5130000000 milliseconds) in the future: 2013-05-21 10:32:24,929 INFO EPServiceProviderImpl Initializing engine URI 'default' version 4.9.0 ] |
Comments |
Comment by Thomas Bernhardt [ 21/May/13 ] |
Always set the time BEFORE creating the statement |
Comment by Chris Myzie [ 21/May/13 ] |
Sorry, I just made that mistake in the test case. After correcting it, I can still reproduce the issue: 2013-05-21 11:19:26,931 INFO EPServiceProviderImpl Initializing engine URI 'default' version 4.9.0 ] |
Comment by Chris Myzie [ 21/May/13 ] |
Fixed the initial time event. |
Comment by Thomas Bernhardt [ 21/May/13 ] |
can you add an assertion please? |
Comment by Chris Myzie [ 21/May/13 ] |
Added an assertion that checks the number of events that were fired. |
Comment by Chris Myzie [ 22/May/13 ] |
As a workaround I was to get it working by manually specifying each month: insert into eom select * from pattern [ every timer:at(0, 17, lastweekday, 1, *) ]; |
[ESPER-746] Self-Join between derived value streams provides incorrect result Created: 14/May/13 Updated: 09/Sep/13 Resolved: 25/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample query: select The self-join of derived values incorrectly initilizes the join and provides incorrect results. Workaround is to use insert-into for each stream separately and std:lastevent. |
[ESPER-745] Qualified names don't work in patterns Created: 07/May/13 Updated: 07/May/13 Resolved: 07/May/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Test | Priority: | Minor |
Reporter: | Andreas Voss | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows |
Number of attachments : | 0 |
Description |
I want to detect a sequence of 2 transactions, where the amount of the first transaction is the same as the second transaction, but with different sign. The following statement never matches: @Name("SimpleSequence2")
INSERT INTO SimpleSequence2
SELECT t1.amount, t2.amount FROM PATTERN [
every t1=Transaction(t1.amount > 0) -> every t2=Transaction(t1.amount + t2.amount = 0)
]
The following statement matches (but does not meet the requirement): @Name("SimpleSequence2")
INSERT INTO SimpleSequence2
SELECT t1.amount, t2.amount FROM PATTERN [
every t1=Transaction(t1.amount > 0) -> every t2=Transaction(t2.amount < 0)
]
but the output adapter receives a negative value for both, t1.amount and t2.amount. This indicates, that esper does not handle the qualified names correctly. The only way to get this work was to use names, that are different even if not qualified: @Name("TX1") INSERT INTO TX1 SELECT amount as a1 FROM Transaction(amount > 0); @Name("TX2") INSERT INTO TX2 SELECT amount as a2 FROM Transaction(amount < 0); @Name("SimpleSequence") INSERT INTO SimpleSequence SELECT t1.a1, t2.a2 FROM PATTERN [ every t1=TX1 -> every t2=TX2(t1.a1 + t2.a2 = 0) ]; |
Comments |
Comment by Thomas Bernhardt [ 07/May/13 ] |
Please provide a test class that demonstrates the issue, review test class instructions at http://esper.codehaus.org/esper/issues/issues.html |
Comment by Andreas Voss [ 07/May/13 ] |
I'm sorry, when I prepared the example class, I noticed the bug was in my test code. I was re-using the Event like Transaction tx = new Transaction(100); // amount send(tx); tx.setAmount(-100); send(tx); This (of course) was confusing esper. Sorry again, and thanks for your quick response. |
[ESPER-744] parse error in prepared statement for count(*,filter_expr) Created: 23/Apr/13 Updated: 09/Sep/13 Resolved: 25/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The epl example in the code snippet below gets compiled wrongly if it is done via a prepared statement. The print statement outputs "count(false)" instead of "count(*, false)" and the aggregate behaves like count disregarding the filter expression. Compiling to EPStatement directly does not produce the same problem. String epl = "select count(*, false) from TestEvent.win:length(6)" EPPreparedStatement eps = admin.prepareEPL(epl); EPStatement statement = admin.create(eps, "test"); System.out.println(statement.getText()); |
[ESPER-743] Join accross ObjectArrayEvent and MapEvent leaks data from MapEvent Created: 18/Apr/13 Updated: 09/Sep/13 Resolved: 23/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Reinhard Iben | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows7 64bit, |
Attachments: | TestMethod1.java TestMethod.java |
Number of attachments : | 2 |
Description |
I tried to enrich an ObjectArrayEvent by using method invocation. Therefore I started with create schema and window for the new inherited Event. The same approch with smaller EPL without creating schema and windows works fine. To verify whether method invocation causes the problem, I did the second sample TestMethod1, which does not rely on method invocation, is running into the same problem. |
Comments |
Comment by Reinhard Iben [ 24/Apr/13 ] |
The following list of statements, does not provide the properties of B1 to the listener. problem create schema C as (u int) inherits A;
create window Cw.win:time(30 days) as C;
insert into Cw select B1.u as u, A1.* from A.win:time(5 days) as A1, method:TestMethod1.lookupB() as B1;
@Name('listener')
select * from Cw;
A different approach without using the explicit create schema statement does it correctly. workaround insert into C select A1.*, B1.u as u from A as A1, method:TestMethod1.lookupB() as B1; create window Cw.win:time(5 days) as C; insert into Cw select * from C; @Name('listener') select * from Cw; |
[ESPER-742] Static method lookup selects incorrect classstatic method lookup Created: 15/Apr/13 Updated: 09/Sep/13 Resolved: 23/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Barry Kaplan | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I import two classes to provide UDFs (in this order) NonOverlappingIntervalSeries When looking up the class while resolving the method (by com.espertech.esper.epl.core.EngineImportServiceImpl#resolveClassInternal) the list of imports is checked for a match. When a class import is found, the class name being searched is compared against the import via: if(importName.endsWith(className)) { ClassLoader cl = Thread.currentThread().getContextClassLoader(); return Class.forName(importName, true, cl); }
In my example "NonOverlappingIntervalSeries".endsWith("OverlappingIntervalSeries") == true resulting in the incorrect class being selected form the imports. |
[ESPER-741] Named window on-action with relational operator (<, <=) where-clause incorrect behavior when reversing comparison Created: 13/Apr/13 Updated: 09/Sep/13 Resolved: 23/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Chris Myzie | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Linux 64bit, OpenJDK 7 |
Attachments: | Main.java test_case.epl |
Testcase included: | yes |
Number of attachments : | 2 |
Description |
The following trivial example does not work as expected. It should immediately delete the arriving event from the window. create window insert into @Audit The simple work around is to flip "On Delete"'s criteria_expression to "testWindow.x >= 1.0", and then the event is deleted as expected. |
Comments |
Comment by Chris Myzie [ 13/Apr/13 ] |
The automatic formatting mangled the EPL. |
Comment by Thomas Bernhardt [ 13/Apr/13 ] |
Can you provide a test class the demonstrates the issue please? |
Comment by Chris Myzie [ 13/Apr/13 ] |
Added a test class. |
Comment by Thomas Bernhardt [ 13/Apr/13 ] |
Thanks for the test case, I was able to reproduce. |
Comment by Thomas Bernhardt [ 13/Apr/13 ] |
Affects named window on-trigger with a where clause providing a constant in a relational op comparison. |
[ESPER-740] POJO event populated by selectclause and via POJO constructor and select clause selects same type twice is created using wrong parameters Created: 07/Apr/13 Updated: 09/Sep/13 Resolved: 23/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Chris Myzie | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Linux 64bit with OpenJDK 7 |
Attachments: | BBO.java Main.java Quote.java |
Testcase included: | yes |
Number of attachments : | 3 |
Description |
Please see the attached minimal example. The first statement demonstrates the problem. It should merge the two Quote events into a single BBO event with one Quote of type 'BID' and one Quote of type 'ASK', but instead it passes the Quote of type 'BID' twice. The second statement performs the same operation, but instead creates an adhoc event, which is created correctly. |
Comments |
Comment by Thomas Bernhardt [ 08/Apr/13 ] |
Applies only when no setters are present and constructor must be used to populate POJO. Workaround is to provide setters. |
[ESPER-739] All calls methods named "get" assumed to be Date-Time method Created: 27/Mar/13 Updated: 09/Sep/13 Resolved: 25/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
If a property or a variable is a Map or other object with a get method then this cannot be called from within a statement (on the other hand put works fine). Eg: create variable Map FOO select FOO.get(ticker) from MyEvent com.espertech.esper.client.EPStatementException: Error starting statement: Date-time enumeration method 'get' requires either a Calendar, Date or long value as input or events of an event type that declares a timestamp property (Example does not show variable being set). Workaround is to use wrapper class renaming get methods. Assume same namespace clash could occur for other methods? Possibly this could be fixed by prioritizing object methods over other methods. |
[ESPER-738] Performance issue with 8 threads, keyed context partitioned, synchronized listener, event sequence for same partition Created: 25/Mar/13 Updated: 09/Sep/13 Resolved: 23/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The engine logs frequent "[UpdateDispatchFutureSpin] Spin wait timeout exceeded in listener dispatch for statement 'select'" and performance is low. This is when sending events that affect the same partition, i.e. all 8 threads sending an event affecting the same partition. I can turn off dispatch preserve order and performance is great. This is with 8 threads and these two statements: This is with a synchronized listener: |
[ESPER-737] NullPointerException with grouped data window intersecting time window and last/first event Created: 25/Mar/13 Updated: 09/Sep/13 Resolved: 23/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | FirstEventTest.java |
Number of attachments : | 1 |
Description |
Sample data window definitions that cause the exception: Workaround: Exception trace: |
Comments |
Comment by Thomas Bernhardt [ 25/Mar/13 ] |
Attached test case provided by Nathan R. |
[ESPER-736] EPL Pattern that reacts to events inserted into a named window when using on-merge Created: 21/Mar/13 Updated: 31/Mar/14 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample: Workaround is simple: the pattern reacts to the event inserted into the named window instead. Workaround for the example above: |
[ESPER-735] Esper 4.9.0 OSGi bundle execution environment restricted to J2SE 1.6 Created: 21/Mar/13 Updated: 09/Sep/13 Resolved: 23/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Declan Cox | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Java 1.7 |
Number of attachments : | 0 |
Description |
The OSGi metadata in Esper 4.9.0 includes the following directive: Bundle-RequiredExecutionEnvironment: J2SE-1.6 This is not a minimum requirement but an exact requirement, which means that the Esper bundle may not be used in a Java 1.7 OSGi environment. This can be solved by altering the directive as follows: Bundle-RequiredExecutionEnvironment: J2SE-1.6, J2SE-1.7 We verified this locally by manually altering the manifest data and were able to start the bundle successfully on Apache Karaf. |
Comments |
Comment by Declan Cox [ 22/Aug/13 ] |
We would love to use Esper in Karaf - please somebody have a look at this , Thanks. |
Comment by Thomas Bernhardt [ 23/Aug/13 ] |
for 4.10 release |
[ESPER-734] Unclear exception for invalid match_recognize Created: 13/Mar/13 Updated: 09/Sep/13 Resolved: 23/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Johan Van Noten | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Scenario:
Problem:
The exception: |
[ESPER-733] Passing aggregate scalars to global script Created: 05/Mar/13 Updated: 09/Sep/13 Resolved: 23/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The select below compiles fails silently to produce any results create expression change(open, close) [ (open - close) / close ] select change(first(price), last(price)) as ch from PC.win:time(1 day) |
Comments |
Comment by Mitch [ 06/Mar/13 ] |
Sorry, logging was not turned on properly. Err was: ERROR [main]: Exception encountered processing statement 'afcf701b-5db6-482f-ab3a-0f93a068b239' statement text 'select change(first(price), last(price)) as ch from PC.win:time(1 day)' : null java.lang.NullPointerException at com.espertech.esper.epl.expression.ExprAggregateNodeBase.evaluate(ExprAggregateNodeBase.java:131) at com.espertech.esper.epl.script.ExprNodeScriptEvalJSR223.evaluate(ExprNodeScriptEvalJSR223.java:40) at com.espertech.esper.epl.core.eval.EvalSelectNoWildcardMap.process(EvalSelectNoWildcardMap.java:48) at com.espertech.esper.epl.core.SelectExprResultProcessor.process(SelectExprResultProcessor.java:52) at com.espertech.esper.epl.core.ResultSetProcessorHandThrough.getSelectEventsNoHaving(ResultSetProcessorHandThrough.java:107) at com.espertech.esper.epl.core.ResultSetProcessorHandThrough.processViewResult(ResultSetProcessorHandThrough.java:72) at com.espertech.esper.epl.view.OutputProcessViewDirect.update(OutputProcessViewDirect.java:45) at com.espertech.esper.view.ViewSupport.updateChildren(ViewSupport.java:115) at com.espertech.esper.view.window.TimeWindowView.update(TimeWindowView.java:148) at com.espertech.esper.view.ZeroDepthStream.insert(ZeroDepthStream.java:54) at com.espertech.esper.view.stream.StreamFactorySvcImpl$2.matchFound(StreamFactorySvcImpl.java:188) at com.espertech.esper.core.service.EPRuntimeImpl.processStatementFilterSingle(EPRuntimeImpl.java:1247) at com.espertech.esper.core.service.EPRuntimeImpl.processMatches(EPRuntimeImpl.java:988) at com.espertech.esper.core.service.EPRuntimeImpl.processWrappedEvent(EPRuntimeImpl.java:459) at com.espertech.esper.core.service.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:437) at com.espertech.esper.core.service.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:196) |
[ESPER-732] Transpose event aggregation result as events to new stream Created: 05/Mar/13 Updated: 09/Sep/13 Resolved: 30/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.8 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
If have event MyEvent with int property quantity, then following statements wont compile: insert into MYSTREAM select quantity from MyEvent insert into TEST select last as lastEvent from MYSTREAM.win:length_batch(4) select lastEvent.quantity as quantity from TEST The last statement fails to compile with "ExprValidationPropertyException: Failed to resolve property 'lastEvent.quantity' to a stream or nested property in a stream" It seems that last.quantity is valid, but property access breaks down if the map is inserted into another stream. Also if the first statement is changed to "select * from MyEvent" and MyEvent is registered POJO, then you can pass last to another stream and the last statement works. Creating a schema for MYSTREAM does not help. P.S. have raised this in nabble forum but I think old nabble is having technical issues. |
Comments |
Comment by Thomas Bernhardt [ 05/Mar/13 ] |
It would be desirable to allow transposing events returned by event aggregation functions (window, last etc.) into insert-into streams. Currently transposing events occurs only when selecting stream alias or pattern tags (or wildcard and stream-wildcard or transpose-function). One needs to note that existing contracts should not be broken. One contract is to have the inserted events be the same as the events that any statement listeners receive. Another is that event aggregation functions return the underlying event(s) unless passed to udf or used with enumeration methods of course i.e. if plainly selected. Another is that the result of a select is the same whether there is an insert-into or not. Therefore I think an indication is necessary whether the underlying events or transposable events are selected. |
Comment by Mitch [ 05/Mar/13 ] |
Would be nice to be able to pass the array returned by window() or the new sorted() aggregation functions to another stream and then be able to use enumeration methods. Not sure I followed your comment about not breaking existing contracts, but you may want to test with decorated events too. |
Comment by Thomas Bernhardt [ 05/Mar/13 ] |
You can already pass an array of classes or scalar values between streams and invoke enumeration methods. Including arrays of events that result from pattern tag multiple matches. Just not yet those backed by map or object array events in combination with event aggregation functions (sorted, window). |
Comment by Mitch [ 05/Mar/13 ] |
Thanks, yes, I didn't make that clear. |
[ESPER-731] Question on pattern with every Created: 14/Feb/13 Updated: 18/Feb/13 Resolved: 18/Feb/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.8 |
Fix Version/s: | None |
Type: | Story | Priority: | Trivial |
Reporter: | Dan Dreon | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Java6 |
Number of attachments : | 0 |
Description |
The documentation clearly states that the pattern[every(A)] resets after A is satisfied. In the attached example, the UpdateListener is receiving a multiplicity of events every time the subexpression is reset. This will eventually lead to an EventBean[] that is unworkable. Unfortunately the attachments button is not working so I will include the code here. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> import com.espertech.esper.client.Configuration; class Zig { } class Status { public int id; public Status(int id) { this.id=id; } } class Zag { } public class TestAndNot { public static final void main(String[] args) { Configuration config = new Configuration(); config.addEventType("Zig", Zig.class); EPServiceProvider provider = EPServiceProviderManager.getDefaultProvider(config); EPStatement stmt = admin.createEPL("select * from pattern[every((zig=Zig -> every status=Status) and not zag=Zag)]"); catch(Exception ex) { int j = 0; } |
Comments |
Comment by Thomas Bernhardt [ 18/Feb/13 ] |
You pattern is this: When a Zig event arrives, the engine starts looking for all Status events. For every Status event your "zig=Zig -> every status=Status" subexpression turns true, therefore the engine looks for the next Zip event. It will not stop looking for Status events, it will look for Zip and Status events. When the next Zig comes in it will look twice for Status events, once for the first Zig and once for the second Zig. Maybe you will find a join/outer join (also good for absence detection) more easy to handle in designing for, also since the pattern seems to look for many-to-many relationships (it is utterly uncorrelated), |
[ESPER-730] Statement Object Model for "is null" Created: 12/Feb/13 Updated: 04/Mar/13 Resolved: 27/Feb/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.8 |
Fix Version/s: | 4.9 |
Type: | Improvement | Priority: | Minor |
Reporter: | Rathna kumar S | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
property=NULL check works in 4.6 but not in 4.8. This is similar to issue http://jira.codehaus.org/browse/ESPER-569. |
Comments |
Comment by Thomas Bernhardt [ 12/Feb/13 ] |
Esper is following SQL standards, use "property is null" to check for null |
Comment by Rathna kumar S [ 12/Feb/13 ] |
Can you tell me how this can be achieved when we use the Pull-API? We are trying to build an Esper Query using Expressions. We had earlier used Expressions.eq(name,value), which worked in 4.6 but after we migrated to 4.8, it doesn't work. Now, we tried using Expressions.not(Expressions.isNotNull(..)), which also doesn't help. |
Comment by Rathna kumar S [ 12/Feb/13 ] |
Can you tell me how this can be achieved when we use the Pull-API? We are trying to build an Esper Query using Expressions. We had earlier used Expressions.eq(name,value), which worked in 4.6 but after we migrated to 4.8, it doesn't work. Now, we tried using Expressions.not(Expressions.isNotNull(..)), which also doesn't help. |
Comment by Thomas Bernhardt [ 12/Feb/13 ] |
Do you mean the Statement Object Model API? Is there an "is null" expression missing in that API? |
Comment by Rathna kumar S [ 12/Feb/13 ] |
Yes, seems the "is null" expression is missing in the API. Or, I am not sure if there is any workaround for this. |
Comment by Thomas Bernhardt [ 04/Mar/13 ] |
In release 4.9.0 |
[ESPER-729] Null-value comparison for "not/equals"-operator (!=, =) works inconsistently between Esper V4.6 and V4.8 Created: 12/Feb/13 Updated: 12/Feb/13 Resolved: 12/Feb/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Major |
Reporter: | Rathna kumar S | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In version 4.3, the expression "property = NULL" always returns null. Use "property is NULL" instead to compare against null values. In version 4.2 and earlier, the expression "property = NULL" compares the property against null and returns true/false. More examples: 1) "select 2 != null" returns null in version 4.3 (in version 4.2 it returns true) Use "is null" or "is not null" instead. |
[ESPER-728] Filter improvement for expressions in relationship to other filter ops Created: 05/Feb/13 Updated: 04/Mar/13 Resolved: 27/Feb/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.8 |
Fix Version/s: | 4.9 |
Type: | Improvement | Priority: | Minor |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Java 7, Windows 7 |
Attachments: | EsperConstantTest.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
Given the following two statements: 1: select * from A(value = 1 or value = 2) 2: select * from A(value = 3, EsperConstantTest.evaluate(value)) sending an event A with value 0 erroneously invokes the static method EsperConstantTest.evaluate() leaving out the first statement, this effect disappears! Also if leaving out the second condition of the first statement ("value = 2") the effect also disappears! Please see supplied test class Andy |
Comments |
Comment by Thomas Bernhardt [ 04/Mar/13 ] |
In release 4.9.0 |
[ESPER-727] Thread safety issue with enumeration method in stateless select Created: 09/Jan/13 Updated: 04/Mar/13 Resolved: 09/Jan/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.8 |
Fix Version/s: | 4.9 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Example statement: This affects only enumeration methods that are part of a select statement that is stateless and therefore executes lock-free. Workaround is to make the statement stateful i.e. add a std:lastevent for example. Exception: |
Comments |
Comment by Thomas Bernhardt [ 09/Jan/13 ] |
Change in bugfix480 branch |
Comment by Thomas Bernhardt [ 04/Mar/13 ] |
In release 4.9.0 |
[ESPER-726] aggregation function avg based on BigDecimal with scale defined throws Non-terminating decimal expansion Created: 08/Jan/13 Updated: 22/May/14 Resolved: 27/Feb/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.8 |
Fix Version/s: | 4.9 |
Type: | Bug | Priority: | Minor |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
There is a problem with the aggregation function avg if used in conjunction with a BigDecimal value that has a scale defined. Example: select avg(a.value) from A as a if a.value is of type BigDecimal that has a scale defined like this: a.setScale(2, RoundingMode.HALF_UP); then the following exception is thrown: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. I assume, that this problem could be fixed by changing com.espertech.esper.epl.agg.aggregator.BigDecimalAvgAggregator Replacing: with something like this: |
Comments |
Comment by Thomas Bernhardt [ 27/Feb/13 ] |
No test provide and cannot reproduce. Sample code BigDecimal bigOne = new BigDecimal(20); BigDecimal bigTwo = new BigDecimal(10); agg.getValue(); |
Comment by Andy Flury [ 27/Feb/13 ] |
Please try this example, which will throw the exception: AggregatorAvgBigDecimal agg = new AggregatorAvgBigDecimal(); BigDecimal bigOne = new BigDecimal(0); BigDecimal bigTwo = new BigDecimal(0); BigDecimal bigThree = new BigDecimal(1); agg.getValue(); Andy |
Comment by Thomas Bernhardt [ 27/Feb/13 ] |
We could make the MathContext configurable in the engine configs or @Hint |
Comment by Andy Flury [ 27/Feb/13 ] |
both would be great, whatever you think makes more sense |
Comment by Thomas Bernhardt [ 04/Mar/13 ] |
In release 4.9.0 |
Comment by Bob Tiernay [ 22/May/14 ] |
I just hit this running 4.11.0: 014-05-22 20:41:41,724 [com.espertech.esper.Timer@614b722-1] ERROR c.e.e.e.a.a.AggregatorAvgBigDecimal - Error computing avg aggregation result: Non-terminating decimal expansion; no exact representable decimal result. java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. at java.math.BigDecimal.divide(BigDecimal.java:1616) ~[na:1.7.0_55] at com.espertech.esper.epl.agg.aggregator.AggregatorAvgBigDecimal.getValue(AggregatorAvgBigDecimal.java:88) ~[esper-4.11.0.jar:na] at com.espertech.esper.epl.agg.service.AggSvcGroupAllNoAccessImpl.getValue(AggSvcGroupAllNoAccessImpl.java:67) [esper-4.11.0.jar:na] at com.espertech.esper.core.context.stmt.AIRegistryAggregationMultiPerm.getValue(AIRegistryAggregationMultiPerm.java:68) [esper-4.11.0.jar:na] at com.espertech.esper.epl.expression.ExprAggregateNodeBase.evaluate(ExprAggregateNodeBase.java:130) [esper-4.11.0.jar:na] at com.espertech.esper.epl.core.eval.EvalSelectNoWildcardMap.process(EvalSelectNoWildcardMap.java:48) [esper-4.11.0.jar:na] at com.espertech.esper.epl.core.SelectExprResultProcessor.process(SelectExprResultProcessor.java:58) [esper-4.11.0.jar:na] at com.espertech.esper.epl.core.ResultSetProcessorRowForAll.getSelectListEvents(ResultSetProcessorRowForAll.java:165) [esper-4.11.0.jar:na] at com.espertech.esper.epl.core.ResultSetProcessorRowForAll.processViewResult(ResultSetProcessorRowForAll.java:139) [esper-4.11.0.jar:na] at com.espertech.esper.epl.view.OutputProcessViewDirect.update(OutputProcessViewDirect.java:48) [esper-4.11.0.jar:na] at com.espertech.esper.view.ViewSupport.updateChildren(ViewSupport.java:115) [esper-4.11.0.jar:na] at com.espertech.esper.view.window.TimeBatchView.sendBatch(TimeBatchView.java:220) [esper-4.11.0.jar:na] at com.espertech.esper.view.window.TimeBatchView$1.scheduledTrigger(TimeBatchView.java:282) [esper-4.11.0.jar:na] at com.espertech.esper.core.service.EPRuntimeImpl.processStatementScheduleSingle(EPRuntimeImpl.java:1131) [esper-4.11.0.jar:na] at com.espertech.esper.core.service.EPRuntimeImpl.processScheduleHandles(EPRuntimeImpl.java:689) [esper-4.11.0.jar:na] at com.espertech.esper.core.service.EPRuntimeImpl.processSchedule(EPRuntimeImpl.java:636) [esper-4.11.0.jar:na] at com.espertech.esper.core.service.EPRuntimeImpl.processTimeEvent(EPRuntimeImpl.java:537) [esper-4.11.0.jar:na] at com.espertech.esper.core.service.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:425) [esper-4.11.0.jar:na] at com.espertech.esper.core.service.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:197) [esper-4.11.0.jar:na] at com.espertech.esper.core.service.EPRuntimeImpl.timerCallback(EPRuntimeImpl.java:171) [esper-4.11.0.jar:na] at com.espertech.esper.timer.EPLTimerTask.run(EPLTimerTask.java:61) [esper-4.11.0.jar:na] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_55] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) [na:1.7.0_55] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) [na:1.7.0_55] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55] This may be another location that needs a rounding (AggregatorAvgBigDecimal:line 88) if (optionalMathContext == null) { return sum.divide(new BigDecimal(numDataPoints)); } |
[ESPER-725] Object-array event type not enforcing single supertype Created: 21/Dec/12 Updated: 04/Jan/13 Resolved: 21/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
While the documentation states that object-array event types can only have a single supertype, there is no exception thrown when declaring multiple supertypes. The documentation also has an incorrect example. |
Comments |
Comment by Thomas Bernhardt [ 21/Dec/12 ] |
also document that the additional values added by a subtype append to the object array |
Comment by Thomas Bernhardt [ 21/Dec/12 ] |
change in bugfix470 branch |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-724] Mail bouncing back when sent to user@esper.codehaus.org Created: 21/Dec/12 Updated: 21/Dec/12 Resolved: 21/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Prasannar Rajaraman | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
we have registered for queries. After the registration, we try to send a mail to the ID user@esper.codehaus.org. But the mail keeps bouncing back. Please help us resolve this. |
Comments |
Comment by Thomas Bernhardt [ 21/Dec/12 ] |
Open Codehaus infrastructure issue, see http://jira.codehaus.org/browse/HAUS-2283 |
[ESPER-723] Not able to achieve polling Created: 21/Dec/12 Updated: 21/Dec/12 Resolved: 21/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core, Documentation |
Affects Version/s: | 4.6 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Prasannar Rajaraman | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Our requirement if to poll a table/set of tables from every say 1 minute and fetch the available records. EPStatement statement = cepAdmin.createEPL("select * from pattern [timer:interval(10)], sql:srdv ['select * from testtabforexpbuild']"); |
Comments |
Comment by Prasannar Rajaraman [ 21/Dec/12 ] |
P.S: Since the mail to user@esper.codehaus.org failed, we have raised this as a bug. We actually need help to proceed further. |
Comment by Thomas Bernhardt [ 21/Dec/12 ] |
JIRA is not a discussion forum |
Comment by Thomas Bernhardt [ 21/Dec/12 ] |
The user mailing list is the best place to ask usage questions |
[ESPER-722] Partitioned full outer join selecting remove stream with time windows fails with NullPointerException Created: 18/Dec/12 Updated: 04/Jan/13 Resolved: 18/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Partitioned as follows: Statement: Exception: |
Comments |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-721] NPE on count() in combination with order by Created: 18/Dec/12 Updated: 04/Jan/13 Resolved: 19/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Lukas Prettenthaler | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Java |
Number of attachments : | 0 |
Description |
statement used: if there are no events in the 60 seconds window the below exception is thrown ERROR [com.espertech.esper.core.service.ExceptionHandlingService] (com.espertech.esper.TimerExec-stats-1) Exception encountered processing statement 'b0477b68-ea55-46f5-82bf-b78775812be3' statement text 'select distinct eventId, count(eventId) as messages from Object.win:time(60 sec) group by eventId output last every 10 seconds order by messages desc' : null: java.lang.NullPointerException |
Comments |
Comment by Thomas Bernhardt [ 18/Dec/12 ] |
Attach the full stack trace please. |
Comment by Lukas Prettenthaler [ 18/Dec/12 ] |
sorry i missed that that's the stacktrace: 20:09:43,271 ERROR [com.espertech.esper.core.service.ExceptionHandlingService] (com.espertech.esper.TimerExec-stats-1) Exception encountered processing statement '0463b3fb-3a22-4443-b672-684c5c5284bd' statement text 'select distinct eventId, count(eventId) as messages from Object.win:time(60 sec) group by eventId output last every 10 seconds order by messages desc' : null: java.lang.NullPointerException i am trying to reproduce that problem yet |
Comment by Thomas Bernhardt [ 19/Dec/12 ] |
workaround is to remove "distinct" |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-720] Thread safety issue with enumeration method in stream-level filter Created: 17/Dec/12 Updated: 04/Jan/13 Resolved: 21/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Example statement: This affects only enumeration methods that are part of the filter i.e. "Type(filter)" and not the where-clause. Workaround is to move the enumeration method to the where clause. Exception: |
Comments |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-719] Exception using variable in "after" endpoint context declaration Created: 17/Dec/12 Updated: 04/Jan/13 Resolved: 21/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For example, the EPL: Exception: com.espertech.esper.client.EPStatementException: Unexpected exception starting statement: Variables node has not been validated [create context CtxPerId start after 0 sec end after var_endsec sec] |
Comments |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-718] Debug-level logging triggers ClassCastException in dataflow Select operator when using XML underlying Created: 17/Dec/12 Updated: 04/Jan/13 Resolved: 21/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl cannot be cast to [Ljava.lang.Object; |
Comments |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-717] Allow certain enumeration methods to have lambda and operate on scalar values Created: 11/Dec/12 Updated: 13/Dec/12 Resolved: 13/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have a query which I would naturally be inclined to write like so: select However, this fails validation: ExprValidationException Invalid input for built-in enumeration method 'Max' and 1-parameter footprint, expecting collection of events as input, received collection of String This surprises me a bit: The documentation for the max enumeration method appears to describe it as taking a "collection of values", and it isn't obvious to me why the output of calling the Where enumeration method against a String[] wouldn't qualify. |
Comments |
Comment by Thomas Bernhardt [ 11/Dec/12 ] |
Sample: public void testMinMaxScalarWithLambda() { epService.getEPAdministrator().getConfiguration().addPlugInSingleRowFunction("extractNum", MyService.class.getName(), "extractNum"); String[] fields = "val0,val1".split(","); ); epService.getEPRuntime().sendEvent(SupportCollection.makeString("E2,E1,E5,E4")); ); epService.getEPRuntime().sendEvent(SupportCollection.makeString("E1")); ); epService.getEPRuntime().sendEvent(SupportCollection.makeString(null)); epService.getEPRuntime().sendEvent(SupportCollection.makeString("")); EPAssertionUtil.assertProps(listener.assertOneGetNewAndReset(), fields, new Object[]{null, null} ); public static class MyService { } |
Comment by Thomas Bernhardt [ 11/Dec/12 ] |
Is adding support for scalar arrays to SelectFrom() also a plausible improvement, as in the following? {'1','2','3'} .SelectFrom(v => int(v)).Max() |
Comment by Thomas Bernhardt [ 13/Dec/12 ] |
Changes in enhancements500 branch |
[ESPER-716] Allow use of backtick to escape Enumeration constant (i.e. TickType.`LAST`) Created: 02/Dec/12 Updated: 19/Dec/12 |
|
Status: | Reopened |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Trivial |
Reporter: | Chris Myzie | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
64bit Linux; OpenJDK 7 |
Attachments: | error.txt |
Number of attachments : | 1 |
Description |
The EPL uses TickType.LAST, but because "last" is a function name, it is quoted as TickType.`LAST`. The attached log shows the error. The backtick notation would be useful for use with enumeration, where "TickType". |
Comments |
Comment by Thomas Bernhardt [ 03/Dec/12 ] |
Would that not be `ticktype.last` |
Comment by Chris Myzie [ 04/Dec/12 ] |
I tried just that, but then it fails for all Esper versions: Caused by: com.espertech.esper.epl.expression.ExprValidationPropertyException: Property named 'TickType\.LAST' is not valid in any stream |
Comment by Thomas Bernhardt [ 19/Dec/12 ] |
Assigned to wishlist |
[ESPER-715] new clause "output first after xxx elapsed" Created: 30/Nov/12 Updated: 19/Dec/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | Esper wishlist |
Type: | New Feature | Priority: | Minor |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperOutputAfterTestExtended.java EsperOutputAfterTest.java output after elapsed.gif TestOutputLimitSimple.java.patch |
Number of attachments : | 4 |
Description |
It would be nice to have modified version of the "output first after xxx" clause that only releases a new event after at least the specified time period has elapsed since the last event. Example "output first after 1 min" clause: Event 3/4 and 4/5 are less than 1 minute apart, but they are still released Example "output first after 1 min elapsed" clause: Event 4 is ignored, because it is only 45 seconds from Event 3. Event 5 is released because it is more than 1 min from Event 3 Andy |
Comments |
Comment by Thomas Bernhardt [ 30/Nov/12 ] |
Thats seems to exist in "after", check docs? |
Comment by Andy Flury [ 30/Nov/12 ] |
the doc says "When using after ..., the engine discards all output events until the time period passed as measured from the start of the statement" The "after" does however not intervene with events arriving after this initial period. What I would like is to have a clause that makes sure that there has been a least the specified amount of time elapsed after the last event (but not just since the start of the statement) Hope I could make this more clear! |
Comment by Thomas Bernhardt [ 30/Nov/12 ] |
Can you please compare these 5 cases: |
Comment by Andy Flury [ 30/Nov/12 ] |
The behavior should be the same for all the examples that you mentioned. I attached a graphic to illustrate the behavior |
Comment by Thomas Bernhardt [ 30/Nov/12 ] |
Have you tested where the behavior is different? |
Comment by Andy Flury [ 30/Nov/12 ] |
Well, that there is not really anything i can test at the moment, cause this is would be new feature I'm proposing. All above mentioned queries behave the way the upper example in my graphic depicts. |
Comment by Thomas Bernhardt [ 30/Nov/12 ] |
So you have actually tested that all above mentioned queries behave the way the upper example in my graphic depicts? |
Comment by Andy Flury [ 30/Nov/12 ] |
I have not tested all of them myself. But the examples at the end of the documentation (http://esper.codehaus.org/esper-4.5.0/doc/reference/en/html_single/index.html#appendix_outputspec ) are telling exactly this. Please excuse, if this new functionality already exists and I was not aware of it. |
Comment by Thomas Bernhardt [ 30/Nov/12 ] |
It would really help to test this out. |
Comment by Thomas Bernhardt [ 30/Nov/12 ] |
reclassified as "test" |
Comment by Andy Flury [ 30/Nov/12 ] |
Well now I'm getting confused. Are you saying that the "output first after" should already work like the lower part of my graphic? |
Comment by Thomas Bernhardt [ 30/Nov/12 ] |
I don't know whether its a bug or a new feature. It would be nice if you could find that out? |
Comment by Andy Flury [ 30/Nov/12 ] |
Ok, I did test all cases from "Appendix A. Output Reference and Samples" (see attached Java Class). The results are exactly as the are printed in the documentation. So the behavior is like the upper part of my graphic. |
Comment by Thomas Bernhardt [ 30/Nov/12 ] |
great thanks. |
Comment by Andy Flury [ 30/Nov/12 ] |
I'm not too familiar with the Esper internals, but would be willing to give it a try if you provide me with some hints |
Comment by Thomas Bernhardt [ 30/Nov/12 ] |
For the case "select prop from MyEvent output first" the code is in "com.espertech.esper.epl.view.OutputConditionTime" Other cases need to look separately. We first need to decide on a EPL grammer (syntax change). Then can write a test case, then make engine changes. The test case to be added would be similar to "com.espertech.esper.regression.view.TestOutputLimitSimple" method "test17FirstNoHavingNoJoin" For the syntax, the question appears to be one of reference point or no reference point. Currently we have "select prop from MyEvent output first every 10 seconds" with a reference time point determined based on first event arrival. Perhaps "select prop from MyEvent output first every 10 seconds reference-time null/xxxx" would allow the reference time point to be set to a given value or null for no reference time, i.e. behavior like you propose. |
Comment by Andy Flury [ 01/Dec/12 ] |
I added another test case to TestOutputLimitSample (see attachment). I will have a look at OutputConditionTime for the implementation, but that might take me a while. Regarding reference point. There would be a new reference point set whenever a valid event arrives. So in my opinion we probably would not need "reference-time null/xxxx" |
Comment by Andy Flury [ 01/Dec/12 ] |
do you want to change the type back to feature request? |
Comment by Thomas Bernhardt [ 01/Dec/12 ] |
How to tell the engine to set a new reference point based on event arrival, i.e. instead of regular intervals use irregular intervals |
Comment by Thomas Bernhardt [ 19/Dec/12 ] |
Moved to wishlist |
[ESPER-714] NPE in enumeration method with join Created: 26/Nov/12 Updated: 04/Jan/13 Resolved: 26/Nov/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
An NPE can potentially be observed when using a enumeration method in a join where clause, such as: EPStatement stmt = epService.getEPAdministrator().createEPL("" + com.espertech.esper.client.EPException: java.lang.RuntimeException: Unexpected exception in statement '994014c0-d644-4463-903a-4dd80072f34c': null |
Comments |
Comment by Thomas Bernhardt [ 26/Nov/12 ] |
Change in bugfix470 branch |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-713] Transaction example probabilistic event skipping won't ever skip for event type B Created: 18/Nov/12 Updated: 04/Jan/13 Resolved: 07/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Examples |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Trivial |
Reporter: | Eric Friedman | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
All |
Number of attachments : | 0 |
Description |
in TransactionEventSource.createNextTransaction(), there's some code to suppress events a small % of the time. It's correct for types A and C, but there's a mistake in type B: //skip event 2 with probability 1 in 1000 a random int in that range will always be under 9998: Need to make that 998 to achieve the desired result. A somewhat less error prone approach would be to reference the same symbol: public static final int EVENT_B_PROB = 1000; if (random.nextInt(EVENT_B_PROB) < (EVENT_B_PROB - 2)) { |
Comments |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-712] Contained-event misbehaves in join and subquery when used with named window Created: 16/Nov/12 Updated: 04/Jan/13 Resolved: 18/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestJIRA712.java |
Number of attachments : | 1 |
Description |
When the contained-event selection is made against a named window in the from-clause of a join or subquery the join or subquery may return incorrect results, unless the contained-event selection is itself marked as unidirectional. For example: insert into MyWindow select * from ItemContainer select * from MyWindow[items], MyOtherEvent unidirectional Events are: public ItemContainer(String containerId, SingleItem item) { this.containerId = containerId; this.item = item; } public SingleItem[] getItems() { ; public String getContainerId() { return containerId; }} public static class SingleItem { public SingleItem(String id, int value) { this.itemId = id; this.value = value; }public String getItemId() { return itemId; }public int getValue() { return value; }} |
Comments |
Comment by Thomas Bernhardt [ 16/Nov/12 ] |
Workaround is to insert the contained-event into the named window instead. insert into MyWindow select * from ItemContainer[items] select * from MyWindow, MyOtherEvent unidirectional |
Comment by Thomas Bernhardt [ 18/Dec/12 ] |
The query validation rejects the query. |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-711] Schema-based XML type to represent "dateTime" builtin type as java.util.Date Created: 08/Nov/12 Updated: 19/Dec/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have an event type defined by this schema. |
Comments |
Comment by Thomas Bernhardt [ 19/Dec/12 ] |
Moved to wishlist. ========== User provided change: In SympleTypeParserFactory added: if (classBoxed == Date.class) { catch (Exception ex) { return null; } } In SchemaUtil modified typeMap from {"dateTime", String.class} , to {"dateTime", Date.class} , I've used this SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ") cause it's the standard xml date format. |
[ESPER-710] esperio relies on opentick in maven repository Created: 24/Oct/12 Updated: 24/Oct/12 Resolved: 24/Oct/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 3.3 |
Fix Version/s: | None |
Type: | Bug | Priority: | Blocker |
Reporter: | Eric Miller | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | 3 minutes | ||
Time Spent: | Not Specified | ||
Original Estimate: | 3 minutes |
Number of attachments : | 0 |
Description |
esperio package on the maven repository relies on an opentick package, which is not in the repository. http://mvnrepository.com/artifact/com.espertech/esperio/3.3.0 This is causing my maven builds to fail as I want to include esperio so I can use CSVAdapter. |
Comments |
Comment by Thomas Bernhardt [ 24/Oct/12 ] |
That part of EsperIO is no longer maintained. |
[ESPER-709] esperio AMQPSink ignores exchange propetry Created: 18/Oct/12 Updated: 04/Jan/13 Resolved: 07/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Wouter De Borger | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
esperio AMQPSink ignores exchange propetry the code is channel.basicPublish("", settings.getQueueName(), null, bytes); and should be channel.basicPublish(settings.getExchange() , settings.getRoutingKey(), null, bytes); |
Comments |
Comment by Thomas Bernhardt [ 07/Dec/12 ] |
change in bugfix470 branch |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-708] Allow configuration for static methods/UDF to trigger exception handler upon exception Created: 18/Oct/12 Updated: 04/Jan/13 Resolved: 18/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Since the static method or UDF is completely under the control of your application, currently the engine will not hand exceptions to the exception handler which is also under the control of your application. |
Comments |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-707] Throw error regarding to CGLib when creating window backed by cache Created: 18/Oct/12 Updated: 24/Dec/12 Resolved: 18/Oct/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6, 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Blocker |
Reporter: | Jack Meng | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Throw error regarding to CGLib when creating window backed by cache. Deploy below EPLs when startup. @ExternalDW(name='sampleTerracottaCache') @ExternalDWKey(property='id') @Name('cep-demo-CreateIndex BankAccountAdded') @Name('cep-demo-InsertToWindow BankAccountAdded') The BankAccountAdded class as below. public class BankAccountAdded implements EventProcessable, Serializable{ private String id; public String getId() { return "EP-BankAccountAdded-"+ this.accountNumber + "-" + this.timeCreated; }public void setId(String id) { this.id = id; }
@Override public long getAccountNumber() { return accountNumber; }public void setAccountNumber(long accountNumber) { this.accountNumber = accountNumber; }public long getTimeCreated() { return timeCreated; }public void setTimeCreated(long timeCreated) { this.timeCreated = timeCreated; }} Error logs: 10:57:14,545 [main] WARN [BeanEventType] .initialize Unable to obtain CGLib fast class and/or method implementation for class com.demo.cep.event.BankAccountAdded, error msg is com.demo.cep.event.BankAccountAdded$$FastClassByCGLIB$$b798f254 cannot be cast to net.sf.cglib.reflect.FastClass 10:57:14,607 [main] INFO [VDWCacheBase] Initializing named window 'BankAccountAddedWindow' cache type TERRACOTTA cache at com.espertech.esper.core.service.EPAdministratorImpl.createEPLStmt(EPAdministratorImpl.java:118) at com.espertech.esper.event.EventAdapterServiceImpl.getWriteableProperties(EventAdapterServiceImpl.java:101) |
Comments |
Comment by Jack Meng [ 18/Oct/12 ] |
It works use insert into BankAccountAddedWindow select * from BankAccountAdded; |
[ESPER-706] Query plan output for on-select not comprehensive and Join does not list key field names Created: 17/Oct/12 Updated: 04/Jan/13 Resolved: 07/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestQueryPlan.java |
Number of attachments : | 1 |
Description |
For on-select statements the query plan is not as comprehensively output as for joins. See attached test case. |
Comments |
Comment by Thomas Bernhardt [ 17/Oct/12 ] |
Another common request is to add to the documentation some examples how query plan output looks like and what it means |
Comment by Thomas Bernhardt [ 07/Dec/12 ] |
Documentation for query plan output TBD |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-705] Esper tests build fails on platform with default encoding other than ISO-8859-2 Created: 15/Oct/12 Updated: 04/Jan/13 Resolved: 07/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 4.7 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Marek Winkler | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Linux (default encoding UTF-8) |
Number of attachments : | 0 |
Description |
The build fails during test-compile with the following message: [ERROR] /home/mwinkler/work/repositories/esper/trunk/esper/src/test/java/com/espertech/esper/regression/view/TestOrderBySimple.java:[158,61] unmappable character for encoding UTF8
The POM does not specify project.build.sourceEncoding property, therefore the build is platform dependent. Either please supply encoding information in the POM, or (more preferably) switch sources to UTF-8 encoding. The following conversion worked for me on Fedora Linux: iconv --from-code=ISO-8859-2 --to-code=UTF-8 esper/src/test/java/com/espertech/esper/regression/view/TestOrderBySimple.java > esper/src/test/java/com/espertech/esper/regression/view/TestOrderBySimple.new mv esper/src/test/java/com/espertech/esper/regression/view/TestOrderBySimple.new esper/src/test/java/com/espertech/esper/regression/view/TestOrderBySimple.java |
Comments |
Comment by Thomas Bernhardt [ 07/Dec/12 ] |
in enhancements500 branch |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-704] Function to return triggering event for a JOIN Created: 11/Oct/12 Updated: 11/Oct/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.7 |
Fix Version/s: | Esper wishlist |
Type: | New Feature | Priority: | Minor |
Reporter: | Charles Duffy | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
If several streams are JOINed together, it can be difficult to know the immediate cause of a statement trigger. A function returning this trigger, where one exists, would be a useful extension. |
[ESPER-703] Stateless statement with output rate limiting only outputs same event multiple times under inbound threading Created: 05/Oct/12 Updated: 04/Jan/13 Resolved: 19/Dec/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Toshihiro Nishimura | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Linux, Windows |
Attachments: | OutputEvery_InboundThread.java |
Number of attachments : | 1 |
Description |
Following simple EPL with inboud threading yields unstable outputs. I expect 2 events will be outputted for evch call of UpdateListener#update as follow: But I've got following results with attached program: Workaround is to turn off inbound threading or to specify a view like event.win:length(1). |
Comments |
Comment by Thomas Bernhardt [ 05/Oct/12 ] |
Reclassified as task since most likely expected behavior |
Comment by Thomas Bernhardt [ 19/Dec/12 ] |
Cause by the engine classifying the statement as stateless, it is stateful. |
Comment by Thomas Bernhardt [ 04/Jan/13 ] |
part of 4.8 release |
[ESPER-702] Distinct count in correlated subselect returns invalid result Created: 03/Oct/12 Updated: 08/Oct/12 Resolved: 03/Oct/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestDistinctCountSubselect.java |
Number of attachments : | 1 |
Description |
Esper returns invalid result when count(distinct something) is used in subselect which use where condition. Steps to reproduce the bug: 1) create EPL statement: 2) send 4 events: 4) verify results - correct values are: See attached test case TestDistinctCountSubselect.java |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-701] Nested context with partitioned context managing a non-overlapping context produces incorrect results Created: 26/Sep/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | ContextBugTest.java |
Number of attachments : | 1 |
Description |
This bug affects a context declared as nested (2 levels for this example, same for multiple levels), and wherein the parent context is a partitioned context and the child context is a overlapping context (bug also applies for non-overlapping and category-based subcontext). Test case attached. |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-700] Multicast UDP support for esperio Created: 25/Sep/12 Updated: 03/Mar/15 Resolved: 19/Feb/15 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.6 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Walter Eaves | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Linux with openpgm |
Number of attachments : | 0 |
Description |
I'd like to know if it would be easy to extend or adapt the SocketConfig of the esperio-socket implementation to support PGM. |
Comments |
Comment by Walter Eaves [ 26/Sep/12 ] |
I've done some research (I asked Steven McCoy). There is no full PGM stack in pure Java. But Java 7 does support multicast UDP. Would it be possible to extend esperio-socket to support a multicast UDP sockets? The esperio-socket multicast service would be limited to single packets of the CSV type data, but that would be enough for many high-volume, low-latency systems: in particular, tick data services. http://docs.oracle.com/javase/7/docs/api/java/nio/channels/MulticastChannel.html |
Comment by Thomas Bernhardt [ 26/Sep/12 ] |
Moved to the wishlist. Please feel free to contribute an adapter. |
Comment by Thomas Bernhardt [ 19/Feb/15 ] |
out of scope |
[ESPER-699] Variable not recognized in output-rate-limiting when using deployment API (default compile option) Created: 23/Sep/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When deploying a module using the deployment API and the module contains a variable that is used in output rate limiting, it is not recognized. Workaround: create the variable separately, either via API or createEPL. ========= sample code String moduleStr = "create variable integer snapshotOutputSecs = 10; " + catch (Exception e) { e.printStackTrace(); }================= Exception |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-698] Update-istream with sub-select has thread-safety issue Created: 23/Sep/12 Updated: 08/Oct/12 Resolved: 26/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestUpdateSubselectMultiThread.java |
Number of attachments : | 1 |
Description |
This affects the update-istream statement (on the fly event update) when the update statement has a subselect and multiple threads update events. See attached test case TestUpdateSubselectMultiThread.java |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-697] EsperIOSocketAdapter hides a critical exception Created: 18/Sep/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Major |
Reporter: | Leonid Ilyevsky | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | exception | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Any |
Number of attachments : | 0 |
Description |
When there is a problem opening socket, an error message appears in the log, but the exception is not propagated up the calling stack. |
Comments |
Comment by Leonid Ilyevsky [ 21/Sep/12 ] |
Suggestion: minimalistic fix for this problem is the following. |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-696] Insert into predefined Map-type does not check type conversion criteria of subtype/supertype Created: 13/Sep/12 Updated: 27/Sep/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | InsertFromPatternTest.java |
Number of attachments : | 1 |
Description |
Example to recreate: create schema MapOne as (prop1 string) Above insert-into should fail as the two types are not related. |
Comments |
Comment by Thomas Bernhardt [ 27/Sep/12 ] |
The types have the exact same property names and property types, automatic conversion does allow this for convenients (see doc insert into underlying type) |
[ESPER-695] Pattern with named window events when used in partitioned context, not allowing named window Created: 11/Sep/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Example: CREATE SCHEMA CarEvent(license_plate String); Exception: |
Comments |
Comment by Charles Duffy [ 11/Sep/12 ] |
In terms of the immediate cause: EventTypeUtility.isTypeOrSubTypeOf(evt_RecentCarEvents, evt_CarEvent) returns false when called from ContextControllerPartitionedUtil.validateStatementForContext(). I'm unclear on which codepath is used when no pattern is in play, and thus am unclear on how this issue is avoided under those circumstances. |
Comment by Thomas Bernhardt [ 13/Sep/12 ] |
Does the exception mean the resources get cleaned up? |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-694] Output-first for unaggregated grouped query not outputting first only Created: 10/Sep/12 Updated: 14/Apr/14 Resolved: 20/Jan/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 5.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestUnaggregatedOutputFirst.java |
Number of attachments : | 1 |
Description |
See also discussion in http://stackoverflow.com/questions/12310194/generating-a-deduplicated-event-stream-without-a-window "Output first" is for aggregated use cases, herein the "select * from" means there is no aggregation taking place, it would still be nice to output first per group. |
Comments |
Comment by Thomas Bernhardt [ 20/Jan/14 ] |
for version 5 release |
[ESPER-693] Unit test fails with JDK 1.7_07 Created: 07/Sep/12 Updated: 08/Oct/12 Resolved: 07/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
There is a unit test that fails when testing with JDK 7 update 7 |
Comments |
Comment by wsduifnxkjvw [ 07/Sep/12 ] |
ONLINE STORE : +++ http://fff.to/XGC ++++++++++ Best online store Best quality, Best reputation , Best services ---**** NHL Jersey Woman $ 40 ---**** NFL Jersey $ 35 ---**** NBA Jersey $ 34 ---**** MLB Jersey $ 35 ---**** Jordan Six Ring_m $ 36 ---**** Air Yeezy_m $ 45 ---**** T-Shirt_m $ 25 ---**** Jacket_m $ 36 ---**** Hoody_m $ 50 ---**** Manicure Set $ 20 ---**** handbag $ 37 ---**** ugg boot $ 43 ---**** ---**** sunglass $ 16 ---**** bult $ 17 ---**** +++ http://fff.to/XGC ++++++++++ |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-692] What is NamedCache Created: 05/Sep/12 Updated: 05/Sep/12 Resolved: 05/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Jagan Vittal | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When using distcache. This is my statement so now how can i access namedCache.EntrySet() or namedCache.get('key'); Here is namedCache (OrderCache / OrderWindow) How can we use it? |
Comments |
Comment by Thomas Bernhardt [ 05/Sep/12 ] |
Creating a JIRA is not the right way to ask a question, please use the mailing list instead. |
[ESPER-691] Strange Behaviour from Socket Adpater Created: 05/Sep/12 Updated: 05/Sep/12 Resolved: 05/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Jagan Vittal | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows |
Number of attachments : | 0 |
Description |
When i execute below program, rarely the Event Recieved is Printed. (i.e) Prints 1 time when i execute for more than 20 times. Can anyone explain what would be the problem. package com.espertech.esper.socket; import java.io.BufferedWriter; import com.espertech.esper.client.Configuration; public class CheckSocket { public static class Tick implements Serializable{ public String symbol; public Tick() { super(); }public Tick(String symbol, double price) { super(); this.symbol = symbol; this.price = price; }public void setSymbol(String symbol) { this.symbol = symbol; }public void setPrice(double price) { this.price = price; }public String getSymbol() { return symbol; }public double getPrice() { return price; }} public static class MyLis implements UpdateListener{ @Override } public static void main(String[] args) throws UnknownHostException, IOException { Configuration config = new Configuration(); config.addEventType("MyTick",Tick.class.getName()); ConfigurationSocketAdapter adapterConfig = new ConfigurationSocketAdapter(); SocketConfig socket = new SocketConfig(); socket.setDataType(DataType.CSV); socket.setDataType(DataType.OBJECT); socket.setPort(8709); adapterConfig.getSockets().put("SocketStream", socket); // start adapter EPServiceProvider epService = EPServiceProviderManager.getProvider("engineURI",config); EsperIOSocketAdapter socketAdapter = new EsperIOSocketAdapter(adapterConfig,epService.getURI()); socketAdapter.start(); EPStatement stmt = epService.getEPAdministrator().createEPL("select * from MyTick"); stmt.addListener(new MyLis()); Socket clientSocket = new Socket("localhost",8709); ObjectOutputStream out = new ObjectOutputStream(clientSocket.getOutputStream()); out.writeObject(new Tick("sym",2000)); out.writeObject(new Tick("dem",1000)); String newline = System.getProperty("line.separator"); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())); bw.write("stream=MyTick,symbol=sym,price=20"); bw.write(newline); bw.flush(); bw.close(); out.flush(); out.close(); clientSocket.close(); socketAdapter.destroy(); }} |
Comments |
Comment by Thomas Bernhardt [ 05/Sep/12 ] |
Please send to the user mailing list. |
[ESPER-690] Batch window that accumulates until value changes Created: 04/Sep/12 Updated: 30/Aug/13 Resolved: 30/Aug/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be nice to have a simple batch window that accumulates events until the value of an expression changes. Events come in sequences of equal values of property P |
Comments |
Comment by Thomas Bernhardt [ 30/Aug/13 ] |
Already provided by expiry expression batch window. |
[ESPER-689] ClassCastException with "stream.*" syntax and insert-into and context Created: 24/Aug/12 Updated: 08/Oct/12 Resolved: 26/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestEnrichedPOJOEvents.java |
Number of attachments : | 1 |
Description |
The workaround is to simply select the stream, i.e. |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-688] ArrayOOB exception with expression def in where-clause of on-select Created: 24/Aug/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestExpressionDefArrayException.java |
Number of attachments : | 1 |
Description |
An exception ArrayIndexOutOfBoundsException can occur when a declared expression is referred to in a where-clause part of an on-select. See attached test case. Workaround is to not refer to the declared expression in the where-clause and instead put the expression in (undeclared). |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-687] Named Window and Fire-And-Forget query incorrectly passes null comparison operator Created: 21/Aug/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Major |
Reporter: | Jonathan Knehr | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | NullTest.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
I have traced the bug to the class "NamedWindowConsumerView.java". It is here, in the passFiler function: boolean pass = true; } if (pass) filtered.add(theEvent); The highlighted line should be changed to this: if ((result == null) || (!result)) Otherwise when the null comparison happens in the "ExprEqualsNodeImpl.java" class, it always passes through the event incorrectly. |
Comments |
Comment by Jonathan Knehr [ 23/Aug/12 ] |
This bug exists in com.espertech.esper.epl.named.FilteredEventIterator.java as well... Probably else where, too. |
Comment by Jonathan Knehr [ 23/Aug/12 ] |
and EPPreparedExecuteMethod.java |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-686] (.NET) Cannot use reserved words as part of a property chain Created: 16/Aug/12 Updated: 26/Sep/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 4.5 |
Fix Version/s: | NEsper .NET 4.6 |
Type: | Bug | Priority: | Major |
Reporter: | Alastair Maw | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I've admittedly only tried this in NEsper, but I suspect it's an issue in Esper too, as I think it might be an EPL grammar bug... I'm trying to select down my object tree - something like this: select Bar.Baz from Foo ...but my top-level property is called `Order`. Now, `Order` is a reserved keyword, so you need to escape it in backticks. I figured that this would work: select `Order`.Baz from Foo But it blows up with this:
If I change the property's name from `Order` to `Bar`, but keep the backticks in the select, it all works fine. |
[ESPER-685] "Very likely memory leak" warning in Tomcat 6 Created: 16/Aug/12 Updated: 08/Oct/12 Resolved: 24/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Studienprojekt Apro | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Tomcat6 6.0.35, Java 6, Windows and Linux |
Attachments: | logfile.txt |
Number of attachments : | 1 |
Description |
We use Esper in a servlet and get a lot of log entries about very likely memory leaks when undeploying the servlet. An example log entry:
This one occurs after just deploying and immediately undeploying the servlet. After using Esper with just two or three events there are a lot more entries. (see attached log file) We launch Esper without a special configuration. EPServiceProvider provider; EPAdministrator administrator; ... administrator.destroyAllStatements(); provider.destroy(); |
Comments |
Comment by Thomas Bernhardt [ 24/Sep/12 ] |
Change in enhancements500 branch |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-684] Object Array Event Types in Isolated Services Created: 08/Aug/12 Updated: 08/Oct/12 Resolved: 26/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Task | Priority: | Major |
Reporter: | Bastian Hoßbach | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The sendEvent() methods in isolated services differ from the normal ones. When somebody is working with object array event types and he wants to catch up a statement from historical data (persisted as object array events), there is no method in isolated services that could be used (only map, object and node event types are supported). |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-683] Firstunique window and firstevent window handling updates Created: 04/Aug/12 Updated: 08/Oct/12 Resolved: 26/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | OnUpdateTest.java |
Number of attachments : | 1 |
Description |
On-update of a value when expiry controlled by firstunique or firstevent data window not leaving value in data window. |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-682] Support for short-type arithmetic Created: 03/Aug/12 Updated: 25/Sep/12 Resolved: 25/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Add support for java.lang.Short in +/-/*/divide ops. |
Comments |
Comment by Thomas Bernhardt [ 25/Sep/12 ] |
Duplicate to |
[ESPER-681] (NEsper .NET) when using time window, a blank event was captured at starting and then a blank event was captured at end Created: 02/Aug/12 Updated: 26/Sep/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | None |
Fix Version/s: | NEsper .NET 4.6 |
Type: | Bug | Priority: | Minor |
Reporter: | Chris | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
.net 4.0 |
Number of attachments : | 0 |
Description |
as the code below: the listener will get one blank event at first, then when the last event passed, one blank event was inserted into the stream by the engine. The average price is {0}", b.Get("avgPrice"), DateTime.Now.ToString("hh:mm:ss")); the output: |
[ESPER-680] Improve performance of CSVInputAdapter Created: 30/Jul/12 Updated: 24/Sep/12 Resolved: 24/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Performance |
Affects Version/s: | 4.6 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Daniel Korzekwa | Assignee: | Unassigned |
Resolution: | Incomplete | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'm processing millions of records from CSV files with Esper and I found that simply reading events from CSV files is pretty slow. After debugging I found that by default Esper CSV Adapter reads events byte by byte using FileInputStream. I believe that using BufferedReader and reading events by line should be much faster. That's how I read events myself not using Esper: /*Process CREATE_MARKET EVENT/ val createMarketEvent = marketDataReader.readLine Am I missing something?, is there some important reason for not reading line by line with BufferedReader by Esper. Is there some simple way to switch from FileInputStream to BufferedReader? I found this code in Esper CSVSource file: /**
So there is an option to use Reader but it still reads a single byte rather than a line. I was also profiling performance of Esper CSV. Please see attachment for more details. I use Esper 4.6.0 |
Comments |
Comment by Daniel Korzekwa [ 30/Jul/12 ] |
Because of some reason I cannot attach png file with cpu profiling for esper. Please look here from this file: |
Comment by Thomas Bernhardt [ 24/Sep/12 ] |
Actually the code uses BufferedInputStream already. (And not FileInputStream, where did you think that from), see CSVSource line 38. |
[ESPER-679] Improve performance of CSVInputAdapter Created: 30/Jul/12 Updated: 08/Oct/12 Resolved: 30/Jul/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Improvement | Priority: | Major |
Reporter: | Daniel Korzekwa | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Daniel Korzekwa [ 30/Jul/12 ] |
It's a duplicate of |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-678] Return R² for Linear Regression Created: 13/Jul/12 Updated: 26/Sep/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Andreas Eiselt | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be useful to have a feedback about the quality of the linear regression performed by stat:linest. I would therefor propose to return the Coefficient of determination (R²) as part of the result. |
[ESPER-677] Support for insert for Fire-and-Forget (on-demand) queries Created: 06/Jul/12 Updated: 09/Sep/13 Resolved: 06/Sep/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.6 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently "On Delete" Queries are the only way to remove Events from a Named Window. It would be nice to be able to remove Events from a Named Window or empty an entire Named Window through a Fire-and-Forget Query and/or an API Call |
Comments |
Comment by Andy Flury [ 01/Jul/13 ] |
According to the Doc Modifying and Deleting from Named Windows through FAF queries is now possible. Would it possibly make sense to also allow inserting into Named Windows trough FAF queries? |
Comment by Thomas Bernhardt [ 01/Jul/13 ] |
It would require adding "values" as a keyword which would potentially break applications using that name for other purposes |
Comment by Andy Flury [ 03/Jul/13 ] |
How about this syntax: insert into OrdersWindow set name='IBM', count=4, price=12.0 I believe ANSI SQL has both variants: INSERT INTO table (a, b, c) VALUES (1,2,3) INSERT INTO table SET a=1, b=2, c=3 |
[ESPER-676] Exception using @Audit with create-context and terminated-by filter Created: 27/Jun/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When I add the @Audit-tag to my context statement, I get the following error: 16:45:20,990 ERROR [ExceptionHandlingService] Exception encountered processing statement 'AdBreakCtx' statement text ' |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-675] Memory leak in stat:linest implementation Created: 13/Jun/12 Updated: 14/Jun/12 Resolved: 14/Jun/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core, Performance |
Affects Version/s: | 4.6 |
Fix Version/s: | None |
Type: | Test | Priority: | Minor |
Reporter: | Andreas Eiselt | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | exception, leak, memory, stat:linest | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Ubuntu 12.04 LTS x64, 8 GB RAM |
Attachments: | memoryLeak.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
The use of the stat:linest view provokes an Out-of-Memory Exception because of a memory leak in the implementation. After some tests it seems, as the there are copies of the events stored in memory and not free after their expiry. I attached a code example which demonstrates the behavior. In order to make it easier to observe, the application will output the memory use every 10 seconds on the console. There is as well a commented EPL-Query which doesn't contain the stat:linest view and hence doesn't comprise the memory leak. |
Comments |
Comment by Thomas Bernhardt [ 13/Jun/12 ] |
Your test is producing an unlimited number of group-by values? |
Comment by Andreas Eiselt [ 13/Jun/12 ] |
I'm not sure to what you refer with "unlimited". The number of groups depends in the event-data and is therefor not statically limited. In the test all events (words and their count) are collected during 10 seconds and then events with identical words are grouped together. This produces one stream per word. Over each stream I do then a linear regression. If there is no explication about what is held in memory after this (simple) request, I think this is neither a test nor a minor issue! |
Comment by Thomas Bernhardt [ 14/Jun/12 ] |
If the "term" value is generated by a random number it may never repeat therefore the number of groups is unlimited, i.e. 100 billion groups for example. Also see std:groupwin docs. If you want to claim a memory leak in stat:linest you need to come up with a test that doesn't generate a very large number of groups, as the engine is forced to maintain state per group. |
Comment by Andreas Eiselt [ 14/Jun/12 ] |
I was able to resolve this issue. Actually the problem was not the stat:linest, but the std:groupwin view. This view, for some unclear reasons, holds the value of the attribute you are grouping by in the memory, even if the corresponding window is already empty. So in the following example, the value of "term" stays in memory: SELECT term, COUNT FROM TermEvent.std:groupwin(term).win:time(%s seconds). In my opinion this is inconsistent with concept behind Esper, as the system holds data in memory although it is not anymore needed. The issue can be solved with "@Hint('reclaim_group_aged=10')" which will advise the system to sweep the unused data. |
Comment by Thomas Bernhardt [ 14/Jun/12 ] |
See doc for expiring groups in std:groupwin. |
[ESPER-674] SocketTimeoutException in HTTP adapter when browser posts events using URL entry Created: 11/Jun/12 Updated: 27/Sep/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hello, 03:45:28,568 [Thread-20] ERROR [WorkerThread] I/O error: Read timed out |
Comments |
Comment by Jagan Vittal [ 08/Aug/12 ] |
The default connection timeout of EsperHttpAdapter is 5 secs. see HttpAdapterClassic -> SO_TIMEOUT. |
[ESPER-673] Aggregated row-per-event and grouped query with unidirectional join produces incorrect aggregation value Created: 01/Jun/12 Updated: 08/Oct/12 Resolved: 26/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Toshihiro Nishimura | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EPLTest.java |
Number of attachments : | 1 |
Description |
I used the following EPL The results are: If the query is fully-aggregated |
Comments |
Comment by Thomas Bernhardt [ 01/Jun/12 ] |
Yes a "sum" result can be null, what is special about that? |
Comment by Thomas Bernhardt [ 01/Jun/12 ] |
Provide a test case and describe the problem please? |
Comment by Toshihiro Nishimura [ 04/Jun/12 ] |
I attached a test program. |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-672] NullPointerException when executing on-demand statement query with a nested context partition Created: 01/Jun/12 Updated: 24/Sep/12 Resolved: 24/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5, 4.6 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Paolo de Dios | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | JIRA672Test.java |
Number of attachments : | 1 |
Description |
When executing an on-demand statement with a nested context partition, the Esper core runtime throws a NullPointerException. The statement runs to completion and returns a result, though. Here is the context partition I am using: CREATE CONTEXT TimeSeriesNestedSegmentPerQueryById CONTEXT TimeSeriesNestedSegmentPerQueryById INSERT INTO TimeSeriesUnitWindow SELECT * FROM TimeSeriesUnitEvent; CONTEXT TimeSeriesNestedSegmentPerQueryById Produces this exception stack trace: CREATE CONTEXT TimeSeriesNestedSegmentPerQueryById |
Comments |
Comment by Thomas Bernhardt [ 01/Jun/12 ] |
Attach a test class please? |
Comment by Thomas Bernhardt [ 24/Sep/12 ] |
Cannot reproduce, see attached test case. |
[ESPER-671] Unexpected exception occurs when applying a basic arithmetic operation to short/byte properties Created: 01/Jun/12 Updated: 08/Oct/12 Resolved: 26/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Toshihiro Nishimura | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When I try the following EPL statements, The same exception occurs when prop1 and prop2 are both "byte" type. |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-670] Event that ends/terminates context partition Created: 22/May/12 Updated: 08/Oct/12 Resolved: 26/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In my project I create a non-overlapped context. The Esper 4.6.0 |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-669] Enumeration method not working on bean-array that is property of Map Created: 10/May/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample code to reproduce: epService.getEPAdministrator().createEPL("create schema BookDesc as " + BookDesc.class.getName()); EPStatement stmt = epService.getEPAdministrator().createEPL("select books.max(i => i.price) as mymax from MySchema"); Map<String, Object> event = Collections.<String, Object>singletonMap("books", new BookDesc[] {new BookDesc("1", "book1", "dave", 1.00, null)}); |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-668] CharSequence and String type not compatible Created: 09/May/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The type CharSequence and the String type should be compatible, however the below throws an exception: epService.getEPAdministrator().createEPL("create schema ConcreteType as (value java.lang.CharSequence)"); Exception: Event type named 'ConcreteType' has already been declared with differing column name or type information: Type by name 'ConcreteType' in property 'value' expected interface java.lang.CharSequence but receives class java.lang.String |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-667] Trim statement name Created: 09/May/12 Updated: 14/Apr/14 Resolved: 01/Apr/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When an application provides a statement name using the @Name annotation or by API then that statement name may carry additional spaces. Additional space characters are currently carried forward and are part of the unique name of the statement. By trimming the statement name the name schema could be more consistent when spaces are appended by accident. |
[ESPER-666] StatementAgentInstanceFactoryCreateWindow.newContext() throws NPE if other named window does not exist in insert case Created: 08/May/12 Updated: 08/Oct/12 Resolved: 26/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Minor |
Reporter: | Daniel Huss | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
n/a (JDK6 JVM) |
Number of attachments : | 0 |
Description |
The following statement results in a NullPointerException if "SomeEventType" exists but does not identify a named window: create window Bla.win:time(10 seconds) as SomeEventType insert; (Feature Request?) Instead of failing with another exception, I'm boldly guessing Esper could potentially handle this case as if the following statements were given instead: create window Bla.win:time(10 seconds) as select * from SomeEventType; insert into Bla select * from SomeEventType; |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-665] java.lang.Long.parseLong(String) in SELECT clause is affected by no-schema XML type? Created: 07/May/12 Updated: 24/Sep/12 Resolved: 24/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Daniel Huss | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
n/a (JDK6 JVM) |
Attachments: | SelectStaticMethodCallTest.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
I was expecting all of the following statements to result in [longValue=42] but the third one produced [longValue=null] select java.lang.Long.parseLong('42') as longValue from pattern[every XML] Could be related to "XML" being a no-schema XML type? |
Comments |
Comment by Thomas Bernhardt [ 24/Sep/12 ] |
no-schema XML types accept any properties. |
[ESPER-664] ValueCache.DISABLED in single row function configuration does not disable UDF cache Created: 02/May/12 Updated: 08/Oct/12 Resolved: 26/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Major |
Reporter: | Daniel Huss | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
n/a, JDK 6 JVM |
Attachments: | ValueCacheConfigurationTest.java valuecache.patch.txt |
Testcase included: | yes |
Patch Submitted: |
Yes
|
Number of attachments : | 2 |
Description |
If a single row function is added via the configuration API, ValueCache.DISABLED does not force re-evaluation of the corresponding Java method. |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-663] Keyed Segmented Context with multiple properties not working Created: 01/May/12 Updated: 08/Oct/12 Resolved: 03/Aug/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | ContextWindowTest.java |
Number of attachments : | 1 |
Description |
Sample statements: Sending an event does not trigger the listener for statement 'Test'. |
Comments |
Comment by Thomas Bernhardt [ 01/May/12 ] |
Only workaround available is to either use a single event property or a different context i.e. hash based |
Comment by Thomas Bernhardt [ 03/Aug/12 ] |
change in bugfix460 branch |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-662] Custom aggregation function that receives wildcard ("*") receives instance of com.espertech.esper.type.WildcardParameter and not event Created: 01/May/12 Updated: 08/Oct/12 Resolved: 27/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 4.7 |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample statement: Workaround is to add alias: |
Comments |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-661] EPStatementException in on-select with virtual data window and where-clause using greater-than (less-than) operator Created: 19/Apr/12 Updated: 27/Apr/12 Resolved: 19/Apr/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | 4.6 |
Type: | Bug | Priority: | Minor |
Reporter: | Toshihiro Nishimura | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Esper 4.5 on Linux |
Number of attachments : | 0 |
Description |
@Name('epl1') With the EPL statement above where SampleWindow is a virtual data window, I got following StackTrace: Exception in thread "main" com.espertech.esper.client.EPStatementException: Unexpected exception starting statement: 0 [@Name('epl1') At line 67 of SubordTableLookupStrategyVirtualDW.java, I think the second argument of "new ExternalEvaluatorHashRelOp" is wrong. |
Comments |
Comment by Thomas Bernhardt [ 19/Apr/12 ] |
in 4.6 release |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-660] Allow fragment event type to perform datetime methods Created: 18/Apr/12 Updated: 27/Apr/12 Resolved: 18/Apr/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Simon Lehmann | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Given an event type like this create schema Example as (startts long) starttimestamp startts; the following statement fails on creation: select * from pattern [ a = Example -> b = Example ] where b.after(a); The exception message is: "Error validating expression: Date-time enumeration method 'after' requires either a Calendar, Date or long value as input or events of an event type that declares a timestamp property but received java.util.Map [select * from pattern [ a = Example -> b = Example ] where b.after(a)]" This statement, however, works as expected: select * from pattern [ a = Example -> b = Example(b.after(a)) ]; It seems, as if the event type information is somehow lost outside the pattern. Note, that using the events as such does indeed work, e.g. writing '... where b.startts.after(a.startts)'. The same behavior can also be observed when using POJO-backed events, in which case the error message states '[...] but received full.qualified.NameOfPojoClass [...]'. This indicates that the actual underlying type is preserved, but somehow the EventBean wrappers are lost. |
Comments |
Comment by Thomas Bernhardt [ 18/Apr/12 ] |
Can be addressed via "where b.startts.after(a.startts)". |
Comment by Thomas Bernhardt [ 18/Apr/12 ] |
Change in enhancement460 branch |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-659] Inherit timestamp properties from event super types Created: 18/Apr/12 Updated: 27/Apr/12 Resolved: 19/Apr/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | 4.6 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Simon Lehmann | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | wish | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When using POJOs as event types (e.g. create schema Example as org.example.Example) it would be nice if timestamp properties defined on a super type would be inherited. For example, this create schema Base as org.example.Base starttimestamp startts; should make it possible to use any event of type derived be useable with the time interval algebra methods without explicitly stating 'startts' as the timestamp property. I think this should be not too hard to implement, as inheritance information of POJOs is already used when matching events to from-clauses (e.g. 'select * from Base' will also select any event of type Derived). This would also be consistent with the behavior of non-POJO types, like this create schema Base as (startts long) starttimestamp startts; which actually inherits the starttimestamp property. |
Comments |
Comment by Simon Lehmann [ 18/Apr/12 ] |
Somehow I thought the non-POJO example worked as I described it, but as I tried it again, it failed in the same way. I don't know what I did to assume it once worked, but at least it is consistent behavior now. So, as no inheritance of timestamp properties is done right now, I would suggest to inherit the timestamp properties in all cases. I guess it could lead to problems with multiple inheritance, when timestamp properties are configured on more than one of them. In those cases, an error (a warning?) should be given and the property has to be defined manually. I guess this kind of check has to be done anyways as indentically named properties might occur in general. |
Comment by Thomas Bernhardt [ 18/Apr/12 ] |
It may not always be desirable to automatically inherit the start and end timestamp property names. |
Comment by Simon Lehmann [ 19/Apr/12 ] |
Of course this might be a matter of opinion, but I would assume, if you use inheritance for event types, you want to be able to a) use a base type name in a stream spec to also match any derived type In general, Esper already supports all of this, execpt for using a derived type with date-time methods. At least to me, it was a bit surprising, as the base type defines the timestamp property and that it should be used as such. So I would still suggest to change the inheritance behavior. Maybe a configuratio option or something like that could be introduced to control this, if there really are cases where it might be undesireable to inherit those properties. Otherwise, at least the documentation should make it clear that those properties are excluded from inheritance. Anyway, keep up the good work! |
Comment by Thomas Bernhardt [ 19/Apr/12 ] |
ok we'll if we can have this in 4.6 |
Comment by Thomas Bernhardt [ 19/Apr/12 ] |
in 4.6 release |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-658] context with "start after 0 seconds" starts only after next time tick Created: 17/Apr/12 Updated: 27/Apr/12 Resolved: 17/Apr/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | 4.6 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Another thing I've noticed: create context EveryMinute start after 0 seconds end after 60 seconds context EveryMinute The while testing: esper.send(Wattage(100)) clock.advanceBy(5.second) esper.send(Wattage(300)) clock.advanceBy(5.second) The last assertion fails because when the first Wattage was sent the This is probably only an issue with an externally managed clock which |
Comments |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-657] Adapt the documentation of the reserved keywords Created: 29/Mar/12 Updated: 17/Apr/12 Resolved: 17/Apr/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Studienprojekt Apro | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It seems to be, that the list of reserved keywords in the documentation is incomplete. |
Comments |
Comment by Thomas Bernhardt [ 17/Apr/12 ] |
for release with 4.6 |
[ESPER-656] Variant stream of type ANY when inserting columns and the underlying event in combination the result is not carrying the inserted columns Created: 15/Mar/12 Updated: 27/Apr/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a variant stream gets declared to hold any-event and an insert-into statement selects columns and an underlying event then the columns are lost in the output event. Sample test code epService.getEPRuntime().sendEvent(new SupportBean("E1", 1)); The event that is output by above test code does not hold the "eventConfigId" field. |
Comments |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
change in bugfix450 branch |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-655] Copy method for bean-backed events should prefered configured method over Serializable Created: 10/Mar/12 Updated: 27/Apr/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Debugging this and looking at BeanEventType.getCopyMethod() I am seeing that the copy method is only used if the event class does not implement Serializable. I had expected that defining and copy method would override serialization but it does not seem so. |
Comments |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
changes in bugfix450 branch |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-654] Allow backtick notation for any identifier Created: 09/Mar/12 Updated: 01/Jun/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Daniel Huss | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
n.a. (JDK6 JVM) |
Number of attachments : | 0 |
Description |
I'm proposing an enhancement to the EPL syntax that would allow any identifier to be escaped using the backtick ("`") notation that is currently used to delimit property names. This change would make the following statement valid: select * from pattern[every `candidate book`=`XML Message Type`(catalog.`children's books`[0].age >= 12)] |
Comments |
Comment by Daniel Huss [ 09/Mar/12 ] |
Looks like I'm having a hard time remembering the JIRA markup syntax, sorry about that. |
Comment by Thomas Bernhardt [ 10/Mar/12 ] |
WOuld you like to take a stab at making the changes? We'll help to point you to the right places. |
Comment by Daniel Huss [ 12/Mar/12 ] |
Yes, I'll look into it. I've skimmed over the grammar, now making friends with Antlr. |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
The changes for this improvement did not look easy. I have taken a stab at it and completed the changes. They are checked into the "enhancements460" branch for 4.6 release. Please try them out? |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
Comment by Daniel Huss [ 31/May/12 ] |
Sweet, I've finally had some time to test the enhancement and found some bugs. I should've given a slightly more precise definition of what I'd consider an identifier:
create window `SlidingTimeWindow-10SecondsStream`.win:time(10 seconds) as select * from `__AnyConsumed`]; /* The selected row in the following statement should have a single column named "tag`s name" (enclosing quotes AND backticks are not part of the column name) The double backtick is meant to escape a single backtick. Using the backslash to escape backticks would be more consistent with the current way of escaping dots in property names, but do we really need two different escape character flavors? Assuming backticks work for any identifier, "MyEvent.prop1\.prop2" style expressions could be deprecated and replaced by "MyEvent.`prop1.prop2`" */ select `tag``s name`.`some.property` as `tag``s name` from pattern[every `tag``s name`=`My-Event-Type`]; Unfortunately this feedback is all I can contribute for the moment, really wish I had more (any) spare time to work on actual patches |
Comment by Daniel Huss [ 01/Jun/12 ] |
I'm ...determined to provide plenty test cases in case I end up with some time to spare. Should I reopen this issue once enough test exist? |
[ESPER-653] ExprDotNode.validate does not handle empty array returned by validationContext.getStreamTypeService().getEventTypes() Created: 06/Mar/12 Updated: 27/Apr/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Daniel Huss | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
n.a. (Sun JDK6 JVM) |
Attachments: | ExprDotNodeTest.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
ExprDotNode.java (line 224) raises an ArrayIndexOutOfBoundsException if the returned array has zero elements: {{ {EventType streamZeroType = validationContext.getStreamTypeService().getEventTypes()[0];}}} The following EPL statement provokes the exception: create constant variable java.util.Date START_TIME = java.util.Calendar.getInstance().getTime() |
Comments |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
in branch bugfix450 |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-652] regexp matches whole pattern Created: 20/Feb/12 Updated: 27/Apr/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EPL rexexp matches whole pattern match (java.util.regex.Matcher match() method). Also, example given is: select * from PersonLocationEvent where name regexp 'Jack' is that meant to be '.Jack.' ? |
Comments |
Comment by Mitch [ 20/Feb/12 ] |
Reposting above examples as mangled by formatting: select * from PersonLocationEvent where name regexp '*Jack*' is that meant to be '.*Jack.*' ? |
Comment by Thomas Bernhardt [ 21/Feb/12 ] |
The behavior is the Java regex matcher behavior. |
Comment by Mitch [ 21/Feb/12 ] |
As described above, there are two methods in the java API, find() and matches(). Esper appears to use the latter, which is not how mysql behaves and is not how perl behaves. Normally you would use '^pattern$' to indicate you wanted to match the whole input. Also the example regex in the doc is not well formed. |
Comment by Thomas Bernhardt [ 21/Feb/12 ] |
ok, do you want to provide a patch with the changes? |
Comment by Mitch [ 21/Feb/12 ] |
Hi Tom, I've not looked at the source Im just reporting the behaviour as it caused me to have a buggy rule. Sorry not got time to do more at the moment. |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
documententation change only, change in bugfix450 branch |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-651] Remove stream events with having-clause and "Aggregated and Grouped" (row-per-event) with group-by and time-window Created: 19/Feb/12 Updated: 14/Apr/14 Resolved: 20/Jan/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.6 |
Fix Version/s: | 5.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Assume a query that selects the remove stream, has a having-clause and group-by and time-window, sample query: select rstream string, intPrimitive, sum(longPrimitive) from SupportBean.win:time(1 sec) group by string having count > 2 When events get removed from the time window and the resolution is set to 2 seconds, the having-clause will not fire even if there are more then 2 events in the time window and all events expire at the same time. Assigned to low priority as remove stream is rarely looked at, and the workaround is simply to select from an aggregated stream. Assigned to release 5.0 so that the behavior of the remove stream in this case does change between minor releases. |
Comments |
Comment by Thomas Bernhardt [ 19/Feb/12 ] |
In my query, the query is not "fully aggregated and grouped" so I should receive a notification for each unique Remove event that passes the Having clause. E.g. SELECT RSTREAM somefield, otherfield, anotherfield, COUNT E.g. Observed behaviour: E.g. Observed behaviour: E.g. Expected Behaviour Im finding it difficult to create an accurate testcase to repeat this. Please try the attached code. NOTE 1: This is Only for RSTREAM processing. ISTREAM processing seems to be performed as expected - i.e. not batched. NOTE 2: Try add " SUM(one) " to the select clause of the query. You'll see that this question is probably valid for All aggregates, not just COUNT. I hope this helps clarify my question. |
Comment by Thomas Bernhardt [ 20/Jan/14 ] |
>> Only the notifications for Remove 1&2 pass the having clause (count>15), so only those notifications should be delivered. Since all 4 events expire at the same time, the count after all 4 events expired is 14. So the count drops from 18 to 14 (and not from 18 to 17 to 16 and so on). This is consistent for example with a last-event window. Its count will never go up from 1 to 2 and back down to 1. |
Comment by Thomas Bernhardt [ 20/Jan/14 ] |
The output for "sum(longPrimitive)" and "count" when added to the select clause is always the total i.e. the count in the output jumps from 18 to 14, i.e. is the before vs. after of the per-string group. reporting different aggregated values for the same group would be illegal. |
[ESPER-650] Deadlock when UpdateListener creates a new pattern in Esper 4.4.0 Created: 11/Feb/12 Updated: 24/Feb/12 Resolved: 24/Feb/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Major |
Reporter: | uttkrant | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Esper running in tomcat with thread pools configured for inbound event processing and outbound event listeners |
Number of attachments : | 0 |
Description |
The outbound thread gets blocked while trying to create a pattern. Below are the jstack logs "com.espertech.esper.Outbound-xyz-8" daemon prio=10 tid=0x5f65d000 nid=0x1bf3 waiting on condition [0x5e583000]
"com.espertech.esper.Inbound-xyz-1" daemon prio=10 tid=0x5eec3400 nid=0x1be2 waiting on condition [0x623fe000]
|
Comments |
Comment by Thomas Bernhardt [ 11/Feb/12 ] |
Please test against 4.5 version, I think there may have been a related change. Can you please attach a test case. |
Comment by uttkrant [ 24/Feb/12 ] |
Tested this using 4.5.0 version and it appears that fixed the issue.Thanks so much for the quick turnaround |
[ESPER-649] Deadlock when UpdateListener creates a new pattern Created: 11/Feb/12 Updated: 24/Feb/12 Resolved: 24/Feb/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | uttkrant | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The deadlock occurs an UnmatchedListener is provided and the UnmatchedListener implementation attempts to create a new statement. Workaround: add new statement to queue and let another thread create the new statement. Sample code to reproduce: <pre> public void testIt() { EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(); engine.getEPAdministrator().getConfiguration().addEventType(MyEvent.class); MyUnmatchedListener listener = new MyUnmatchedListener(engine); engine.getEPRuntime().setUnmatchedListener(listener); engine.getEPRuntime().sendEvent(new MyEvent()); } private static class MyEvent { private static class MyUnmatchedListener implements UnmatchedListener { private final EPServiceProvider engine; private MyUnmatchedListener(EPServiceProvider engine) { this.engine = engine; }public void update(EventBean event) { engine.getEPAdministrator().createEPL("select * from MyEvent"); } } |
Comments |
Comment by uttkrant [ 11/Feb/12 ] |
This issue is reproducible with Esper 4.4.0 when updateListener creates a new pattern. This issue occurs where esper is configured with threadpools for inbound event processsing and outbound listeners. Below are Jstack logs for the issue. "com.espertech.esper.Outbound-ATC-8" daemon prio=10 tid=0x5f65d000 nid=0x1bf3 waiting on condition [0x5e583000]
"com.espertech.esper.Inbound-ATC-1" daemon prio=10 tid=0x5eec3400 nid=0x1be2 waiting on condition [0x623fe000]
|
Comment by uttkrant [ 24/Feb/12 ] |
Duplicate of 650 |
[ESPER-648] NullPointerException with "utput Every" & "for discrete_delivery" when no output is available Created: 08/Feb/12 Updated: 27/Apr/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | John Keeney | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | SimpleEsperTest4.java |
Number of attachments : | 1 |
Description |
NullPointerException in com.espertech.esper.core.service.StatementResultServiceImpl.processDispatch(UniformPair<EventBean[]> events)
For query No error when:
See line 252 in ERROR com.espertech.esper.timer.EPLTimerTask - Timer thread caught unhandled exception: java.lang.NullPointerException |
Comments |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
branch bugfix450 |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-647] On-merge for indexed properties only updates the first two values of the array Created: 07/Feb/12 Updated: 09/Feb/12 Resolved: 09/Feb/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | 5.0 |
Type: | Bug | Priority: | Major |
Reporter: | Andreas bauer | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
iMac, Lion 10.7.3, 12GB memory |
Number of attachments : | 0 |
Description |
On-merge updates for indexed properties within a POJO event only update the first two values into the property, i.e. when the event arriving in the on-clause has an property of type array containing 5 elements only the two first get updated in the event specified in the merge-part. POJO class FeatureEvent (implements Serializable): private Double[] creditScore; public FeatureEvent() { this.creditScore = new Double[10]; }public Double[] getCreditScore() {...}public void setCreditScore(Double[] creditScore) { this.creditScore = creditScore; }The upsert looks like this create window monitor.win:time(5 sec) as FeatureEvent; on summedstream s as creditScore The insert into the summedstream is create window summedstream.win:time(5 sec).std:unique(originUuid,type) as ( insert into summedstream When I do a select on summedstream for testing I get all the expected double[] values, e.g. "0.1 | 0.9 | 0.34 | 0.22| ..." But when I do a select on monitor and the "when-matched" part has already performed the update, I always get only the first two elements from summedstream, i.ed. the property creditScore only contains "0.1|0.0". The "when not matched" part always creates the array with the defined amount of empty elements, i.e. property creditScore contains 7 times "0.0" |
[ESPER-646] Output rate limiting "Output first" could retain less results in memory Created: 01/Feb/12 Updated: 16/Mar/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The query "select * from MyEvent group by someproperty output first every 10 hours" keeps 10 hours of events in memory, it could discard. This is documented but could be improved. |
Comments |
Comment by Thomas Bernhardt [ 02/Feb/12 ] |
One can instead declare a intersection between first-unique and time window: "std:firstunique(hostname).win:time(10 hours)" retains the intersection between unique hostname and 10 hours. Or alternatively "from pattern[every-distinct(a.hostname,10 hours) a=A]" |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
It seems the user sent an unlimited number of "someproperty" group keys. This cannot be reproduced. For reference, the code to reproduce would be: int count = 0; |
[ESPER-645] CSV input adapter when used with CSV-provided timestamp the win:ext_timed() behavior as compared to win:time() should that be the exactly the same or different Created: 01/Feb/12 Updated: 16/Mar/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2, 4.4, 4.5 |
Fix Version/s: | 4.5 |
Type: | Test | Priority: | Minor |
Reporter: | Walter Eaves | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | help-requested | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Java(TM) SE Runtime Environment (build 1.6.0_24-b07) Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode) |
Attachments: | eepgwde-ext_timed.zip |
Number of attachments : | 1 |
Description |
I want to be able to replay data at faster than real-time. I've tried to use |
[ESPER-644] Infinite loop when restarting a statement Created: 27/Jan/12 Updated: 27/Apr/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.4 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Alexander Monakhov | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When running the Groovy example below, Esper 4.4 goes to infinite loop in com.espertech.esper.epl.expression.ExprNodeUtility.getValidatedSubtreeInternal(ExprNodeUtility.java:76) import com.espertech.esper.client.Configuration; import com.espertech.esper.client.EPServiceProviderManager; public class EsperTrial { public static void main(String[] args) { def config = new Configuration() def FB = [ 'timeTaken' : double ] config.addEventType 'FB', FB def engine = EPServiceProviderManager.getDefaultProvider(config) def admin = engine.EPAdministrator def st = admin.createEPL( ''' select avg(timeTaken) as timeTaken from FB order by timeTaken desc ''' ) st.stop() st.start() } } Produces Caught: java.lang.StackOverflowError java.lang.StackOverflowError at com.espertech.esper.epl.expression.ExprNodeUtility.getValidatedSubtreeInternal(ExprNodeUtility.java:65) at com.espertech.esper.epl.expression.ExprNodeUtility.getValidatedSubtreeInternal(ExprNodeUtility.java:76) at com.espertech.esper.epl.expression.ExprNodeUtility.getValidatedSubtreeInternal(ExprNodeUtility.java:76) |
Comments |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
Changes in bugfix450 branch |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-643] Use expression as mapped-property key or indexed-property index Created: 26/Jan/12 Updated: 27/Apr/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I am trying to access a mapped-property's values, by using one event property as a key. For instance: Input Event: name string, Statement: select name, Unfortunately, this statement does not compile, saying it cannot find a function 'properties'. If I use a string literal as a key it works. It would really be useful to dynamically access mapped properties' values in EPL. |
Comments |
Comment by Thomas Bernhardt [ 26/Jan/12 ] |
Alternative solution is to use a single-row method or call a method on the event (i.e. inputEvent.getProp(abc)). |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
change in bugfix450 branch |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-642] Log destination for @Audit logs moved to "com.espertech.esper.util.AuditPath" but should be "com.espertech.esper.audit" Created: 23/Jan/12 Updated: 27/Apr/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
change in bugfix450 branch |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-641] Add SupportSubscriber and SupportSubscriberMRD to Public Test Framework Created: 20/Jan/12 Updated: 27/Apr/12 Resolved: 16/Mar/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.5 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
>> The test framework API contains a statement listener but does not contain a statement subscriber for multi-row delivery. |
Comments |
Comment by Thomas Bernhardt [ 16/Mar/12 ] |
changes in enhancements460 branch |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-640] When events are pushed out of a window they are being delevered as NEW events, not OLD events - Only when SELECT selects only the field used for GROUP BY Created: 18/Jan/12 Updated: 19/Jan/12 Resolved: 18/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | John Keeney | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | SimpleEsperTest2.java |
Number of attachments : | 1 |
Description |
It think this is a bug ... otherwise I'm not understnding how windows work ..... given a query : SELECT istream particularField from MYEVENT.win:length(5) GROUP by particularField After 5 events (window is full, so 1st event is pushed out), the one being pushed out is Also notified to the listener/subscriber as a new event. This is the same for time-based and length based windows. If I select any other field too, it doesn't happen. |
Comments |
Comment by John Keeney [ 18/Jan/12 ] |
When I call: SELECT rstream .... I am also notified to events Entering the window. |
Comment by Thomas Bernhardt [ 18/Jan/12 ] |
This is expected behavior although not very intuitive for this special case of aggregation. For example, the query "select key, count from MyEvent.std:lastevent() group by key" will post: Arrival {key=E1}Output {key=E1, count(*)=1}Arrival {key=E2} Output {key=E2, count(*)=1}Therefore when using group-by, when events leave the data window they trigger group changes (since using group by) and for each group the engine indicates the changes to listeners as "newData". The "select rstream" for aggregation means selecting the before-and-after value for each group that is updated, while "select istream" selects the after-value. |
Comment by John Keeney [ 19/Jan/12 ] |
Thanks for the reply. FULLY Aggregated (istream) select istream key, count from MyEvent.win.time(5) group by key T+2 T+3 T+4 T+7 (First event in E1 group window expires) FULLY Aggregated (rstream) select rstream key, count from MyEvent.win.time(5) group by key T+2 T+3 T+4 T+7 (First event in E1 group window expires) NOT FULLY AGGREGATED (irstream) select irstream nonKey, key, count from MyEvent.win.time(5) group by key T+2 T+3 T+4 T+7 (First event in E1 group window expires) Those are Very different semantics for such similar queries! "Select irstream" gives strange behaviour for Fully Aggregated. There is no way to know which event is "Before" the change, and which is "After" the change. It seems to make more sense to have "After event change" (istream and irstream) sent to the update's insertStream, and the "Before event change" (irstream and rstream) sent to update's removeStream. Thanks for the feedback. |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
This is because we wanted the behavior to be consistent with SQL for relational databases. Consider the queries: When fired against any relational database the query (A) returns an output row per row in the table, query (B) returns an output row per key |
[ESPER-639] NullPointerException with Subscriber and Context and Aggregation: at com.espertech.esper.core.context.stmt.AIRegistryAggregationMultiPerm.getValue(AIRegistryAggregationMultiPerm.java:64) Created: 18/Jan/12 Updated: 19/Jan/12 Resolved: 18/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Major |
Reporter: | John Keeney | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | SimpleEsperTest.java |
Number of attachments : | 1 |
Description |
NullPointerException with a subscriber listening for Esper Results, where the SELECT query uses a CONTEXT and has an aggregation. (No error when using a listener instead of a subscriber) e.g. Can be recreated with the attached sample code. java.lang.NullPointerException |
Comments |
Comment by Thomas Bernhardt [ 18/Jan/12 ] |
Thanks for providing a test case. |
Comment by John Keeney [ 18/Jan/12 - Visible by: LoggedIn ] |
Wow That was quick! |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-638] Allow, using backlash, to escape points after reserved keyword 'as' (rather then ticks) Created: 16/Jan/12 Updated: 26/Sep/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Trivial |
Reporter: | Studienprojekt Apro | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
According to chapter 2.2.1 Escape Characters it is possible to escape points in porperty names. Unfortunately it is not possible to insert into a property which contains a point in its name. For example: select xxx as example\.test into Quote |
Comments |
Comment by Thomas Bernhardt [ 18/Jan/12 ] |
You could however select "`example.test`" |
Comment by Thomas Bernhardt [ 18/Jan/12 ] |
Assigned to 5.0 release as the behavior could change in regards to where ticks are removed |
Comment by Thomas Bernhardt [ 18/Jan/12 ] |
Also note that property name and column name are not the same, property name syntax is much more comprehensive then the column alias identifier. |
[ESPER-637] Update of Map event type not cause derived type to update its event property information Created: 16/Jan/12 Updated: 19/Jan/12 Resolved: 16/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.5.0-preview-2.jar |
Number of attachments : | 1 |
Description |
When a Map-type gets updated via "updateMapEventType", and a standing select such as "select *, addiitonal_field from MyMapType" exists, then the output type of that select does not reflect the additional properties added to the Map type. |
Comments |
Comment by Thomas Bernhardt [ 16/Jan/12 ] |
Attached preview for 4.5 addresses this issue. |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-636] EPRuntimeImpl.getVariableValueAll() return non serializable BeanEventBean for object type variables Created: 13/Jan/12 Updated: 26/Sep/12 |
|
Status: | Reopened |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.4 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Trivial |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For object type variables the method EPRuntimeImpl.getVariableValueAll() returns objects of type BeanEventBean which are not serializable. If you try to expose these variables through JMX you end up with a NotSerializableException. The following code would solve this problem: public Map<String, Object> getVariableValueAll() throws EPException values.put(entry.getValue().getVariableName(), value); |
Comments |
Comment by Andy Flury [ 13/Jan/12 ] |
also, it would be nice, if the variables returned by this method would be sorted alphabetically |
Comment by Thomas Bernhardt [ 13/Jan/12 ] |
Variables declared as an event type get delivered as an EventBean instance |
Comment by Andy Flury [ 13/Jan/12 ] |
if have the following variable definition: <variable name="engineStrategy" type="com.algoTrader.entity.Strategy"/> Note: com.algoTrader.entity.Strategy is an arbitrary Java Class and not an event type! When I debug into EPRuntimeImpl i see that "Object value = ..." is an object of type com.espertech.esper.event.bean.BeanEventBean |
Comment by Thomas Bernhardt [ 13/Jan/12 ] |
For variables that are declare as a Class the getVariableValueAll() should optimally deliver as Object and not EventBean. Assigned to the next major release (5.0) since this would change interface behavior and may therefore break existing applications. |
Comment by Andy Flury [ 13/Jan/12 ] |
thanks |
[ESPER-635] Property is ambiguous exception for a pattern that features multiple repeats and followed by Created: 12/Jan/12 Updated: 19/Jan/12 Resolved: 18/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Exception: To reproduce: |
Comments |
Comment by Thomas Bernhardt [ 18/Jan/12 ] |
Change in trunk |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-634] ClassCastException in pattern with unbound repeat until and interval observer Created: 11/Jan/12 Updated: 19/Jan/12 Resolved: 11/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Reproduce using the following code statement = epService.getEPAdministrator().createEPL(query); epService.getEPRuntime().sendEvent(new SupportBean("2", 0)); epService.getEPRuntime().sendEvent(new SupportBean("3", 0)); epService.getEPRuntime().sendEvent(new SupportBean("2", 0)); |
Comments |
Comment by Thomas Bernhardt [ 11/Jan/12 ] |
change in trunk for 4.5 release |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-633] Undeployment not removing event type for on-merge with insert into new stream Created: 11/Jan/12 Updated: 19/Jan/12 Resolved: 11/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
To reproduce: <pre> // Note the second deploy of the same module Exception: Event type named 'ThirdStream' has already been declared with differing column name or type information: Type 'ThirdStream' is not compatible |
Comments |
Comment by Thomas Bernhardt [ 11/Jan/12 ] |
change in bugfix440 and trunk |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-632] No @Audit output for stream category for statement that selects from a named window via select star Created: 10/Jan/12 Updated: 19/Jan/12 Resolved: 11/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a statement selects from a named window such as "@Audit select * from MyWindow" then the @Audit does not print stream information for the named window. |
Comments |
Comment by Thomas Bernhardt [ 10/Jan/12 ] |
Add a category for @Audit that produces output for insert-into. Currently the following two statements produce the same output: @Audit insert into NewStream select * from SomeStream |
Comment by Thomas Bernhardt [ 11/Jan/12 ] |
Change in enhancements450 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-631] ClassCastException with variant stream using single-column conversion to insert into named window Created: 06/Jan/12 Updated: 19/Jan/12 Resolved: 06/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.4.0-JIRA631.jar |
Number of attachments : | 1 |
Description |
When a named window is backed by a variant type and the insert-into uses a function to convert, the conversion does not insert a variant event bean. To reproduce: =========== Exception |
Comments |
Comment by Thomas Bernhardt [ 06/Jan/12 ] |
change in bugfix440 branch |
Comment by Thomas Bernhardt [ 08/Jan/12 ] |
Cumulative full build attached fixes this issue and: |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-630] (.NET) Incorrect behaviour of NEsper with regex Created: 04/Jan/12 Updated: 26/Sep/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core, NEsper |
Affects Version/s: | 4.1 |
Fix Version/s: | NEsper .NET 4.6 |
Type: | Bug | Priority: | Major |
Reporter: | Oleksii Mandrychenko | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | runtime | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Win 2008 Server R2 x64 |
Attachments: | oleksii-mdr-NEsper-6e7559a.zip |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
Problem .\d {1,3}.\d{1,3}\b") I pass a matching value ("127.0.0.5") to the statement, the event successfully fires. INPUT ==RULE FAIL== \.\d {1,3}\.\d{1,3}\b')) ==RULE PASS== Code to reproduce Asked on stackoverflow as well Zipped source code attached |
Comments |
Comment by Oleksii Mandrychenko [ 12/Jan/12 ] |
I was debugging this issue for some time now and found that NEsper incorrectly handles WHERE regexp '' statement. So if I have Then NEsper does some string formatting and validation with 'some valid regexp' and removes some important (and valid) symbols from regexp. Proposed changes. (I don't really know the code but I tried to fix this small issue for me, this is not necessarily the best approach): ------- public object Evaluate(EventBean[] eventsPerStream, bool isNewData, ExprEvaluatorContext exprEvaluatorContext) {...}Two occurances of _pattern = new Regex(String.Format("^{0}$", patternText)); change to _pattern = new Regex(patternText); Reason: I think it is up to the user how regexp is constructed, this shall not be part of a framework. ------- 2. com.espertech.esper.epl.parse.ASTConstantHelper public static Object Parse(ITree node){...} From To if (node.Parent != null) } return StringValue.ParseString(node.Text, requireUnescape); Reason: requireUnescape for all strings, but skip regexp as this brakes valid regexp and removes some valid symbols from it. ------- public static String ParseString(String value) {...} From return value.Substring(1, value.Length - 2); throw new ArgumentException("String value of '" + value + "' cannot be parsed"); To } return value.Substring(1, value.Length - 2); throw new ArgumentException("String value of '" + value + "' cannot be parsed"); Reason: unescape all strings, but the regexp value. |
[ESPER-629] Declared expression not recognized by split-stream syntax when used in second or later stream insert Created: 27/Dec/11 Updated: 19/Jan/12 Resolved: 28/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a split-stream syntax (http://esper.codehaus.org/esper-4.4.0/doc/reference/en/html_single/index.html#split_overview) Sample code: String epl = "on SupportBean as myEvent " + " insert into ABC select * where myLittleExpression(myEvent)" + " insert into DEF select * where not myLittleExpression(myEvent);"; engine.getEPAdministrator().getDeploymentAdmin().parseDeploy(epl); ========= Exception ========= om.espertech.esper.client.deploy.DeploymentActionException: Deployment failed in expression 'expression myLittleExpression { event => true } o...(197 chars)' : Error validating expression: Unknown single-row function, aggregation function or mapped or indexed property named 'myLittleExpression' could not be resolved [expression myLittleExpression { event => true }on SupportBean as myEvent insert into ABC select * where myLittleExpression(myEvent) insert into DEF select * where not myLittleExpression(myEvent)] at com.espertech.esper.core.deploy.EPDeploymentAdminImpl.buildException(EPDeploymentAdminImpl.java:260) at com.espertech.esper.core.deploy.EPDeploymentAdminImpl.deployInternal(EPDeploymentAdminImpl.java:221) at com.espertech.esper.core.deploy.EPDeploymentAdminImpl.deploy(EPDeploymentAdminImpl.java:105) at com.espertech.esper.core.deploy.EPDeploymentAdminImpl.deployQuick(EPDeploymentAdminImpl.java:597) at com.espertech.esper.core.deploy.EPDeploymentAdminImpl.parseDeploy(EPDeploymentAdminImpl.java:542) at com.espertech.esper.core.deploy.EPDeploymentAdminImpl.parseDeploy(EPDeploymentAdminImpl.java:536) at ExpressionTest.testExpression(ExpressionTest.java:32) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:139) at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:52) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Caused by: com.espertech.esper.client.deploy.DeploymentItemException: Error validating expression: Unknown single-row function, aggregation function or mapped or indexed property named 'myLittleExpression' could not be resolved [expression myLittleExpression { event => true } on SupportBean as myEvent insert into ABC select * where myLittleExpression(myEvent) insert into DEF select * where not myLittleExpression(myEvent)] on SupportBean as myEvent insert into ABC select * where myLittleExpression(myEvent) insert into DEF select * where not myLittleExpression(myEvent)] |
Comments |
Comment by Thomas Bernhardt [ 28/Dec/11 ] |
change in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-628] outofmemory problem Created: 26/Dec/11 Updated: 27/Dec/11 Resolved: 27/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core, Performance |
Affects Version/s: | 4.2, 4.4 |
Fix Version/s: | None |
Type: | Bug | Priority: | Critical |
Reporter: | jeff | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Linux2.6.18 |
Attachments: | EsperTest.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
I run a simple Esper test and get a OutofMemory error. (An internal error has occurred. Java heap space) |
Comments |
Comment by Thomas Bernhardt [ 27/Dec/11 ] |
Nonsensible pattern, 2M instance of state machines |
Comment by jeff [ 27/Dec/11 ] |
Thank Thomas. |
[ESPER-627] Evaluation order of subquery against the same named window that triggers the evaluation Created: 19/Dec/11 Updated: 19/Jan/12 Resolved: 19/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The problem appears to be introduced by version 4.4 and was not found in version 4.3 and lower. Sample statements: The problem occurs when a subquery evaluates against the same named window that triggers the statement evaluation. The 'assign' statement subquery assigns a null for the 1st event, however should assign a value of "1". |
Comments |
Comment by Thomas Bernhardt [ 19/Dec/11 ] |
bug fix in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-626] Expression Batch Window Created: 19/Dec/11 Updated: 19/Jan/12 Resolved: 06/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | New Feature | Priority: | Minor |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Expression Batch Window (i.e. win:expr_batch) similar to the win:expr window. The Expression Batch Window would buffer events until the defined expression returns true. This window could for example be used to create constant volume bars: select max(price) as high, min(price) as low, first(price) as open, last(price) as close from StockTickEvent.win:expr_batch(sum(volume) > 1000) |
Comments |
Comment by Thomas Bernhardt [ 04/Jan/12 ] |
Scheduled for 5.0 version; This functionality can be addressed by other means. |
Comment by Andy Flury [ 05/Jan/12 ] |
could you please elaborate on how this can be done by other means? |
Comment by Thomas Bernhardt [ 05/Jan/12 ] |
With version 4.5 upcoming there is the new feature where context can be started and ended(terminated). Such as: create context MyCtx start StockTickEvent end TerminateStockTick select max(price) as high, min(price) as low, first(price) as open, last(price) as close from StockTickEvent output snapshot when terminated insert into TerminateStockTick select true from StockTickEvent having sum(volume) > 1000 |
Comment by Thomas Bernhardt [ 05/Jan/12 ] |
Lets see if we can have this in 4.5, more convoluted to express with contexts. |
Comment by Thomas Bernhardt [ 06/Jan/12 ] |
changes in enhancements450 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-625] Intersection between length-batch window and unique data window produces incorrect aggregation values Created: 14/Dec/11 Updated: 19/Jan/12 Resolved: 28/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestUniqueAndLengthBatchAggregation.java |
Number of attachments : | 1 |
Description |
Example EPL statement: The above statement produces a count of minus 1 eventually. Test case attached. |
Comments |
Comment by Thomas Bernhardt [ 02/Jan/12 ] |
Changes in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-624] ConcurrentModificationException using a subquery against a named window within the stream filter criteria Created: 12/Dec/11 Updated: 19/Jan/12 Resolved: 13/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.4.0-JIRA624-upd1.jar TestMTStmtFilterSubquery.java |
Number of attachments : | 2 |
Description |
A ConcurrentModificationException can be thrown by the engine when it evaluates a subquery that queries a named window and that lives within the filter criteria For example: Workaround: move subquery to where-clause |
Comments |
Comment by Thomas Bernhardt [ 12/Dec/11 ] |
Second workaround: specify @Hint('enable_window_subquery_indexshare') |
Comment by Thomas Bernhardt [ 13/Dec/11 ] |
bug fix in branch bugfix440 |
Comment by Thomas Bernhardt [ 17/Dec/11 ] |
Full build attached for this issue and cumulative for following issues: |
Comment by Barry Kaplan [ 17/Dec/11 ] |
Any chance of getting a source jar attached as well? |
Comment by Barry Kaplan [ 17/Dec/11 ] |
I can confirm that this build fixes the issue from http://old.nabble.com/NPE-after-upgrade-from-4.3-to-4.4-to32878414.html |
Comment by Thomas Bernhardt [ 19/Dec/11 ] |
The "esper-4.4.0-JIRA614.jar" build fails to correct the same issue for patterns. |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-623] NullPointerException in NamedWindowServiceImpl.processHandle when context-dependent and under prioritized execution Created: 01/Dec/11 Updated: 19/Jan/12 Resolved: 01/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem is known to occur only when using a context and when prioritized execution is on and when there are multiple subqueries against the named window as the sample below shows. Exception stack Code to reproduce: public void testPriorititzedExec() throws Exception { Configuration configuration = SupportConfigFactory.getConfiguration(); configuration.getEngineDefaults().getExecution().setPrioritized(true); epService = EPServiceProviderManager.getDefaultProvider(configuration); epService.initialize(); epService.getEPAdministrator().getConfiguration().addEventType(Event.class); sendTimeEvent("2002-05-1T10:00:00.000"); String epl = "\n @Name('ctx') create context RuleActivityTime as start (0, 9, *, *, *) end (0, 17, *, *, *);" + "\n @Name('window') context RuleActivityTime create window EventsWindow.std:firstunique(productID) as Event;" + "\n @Name('variable') create variable boolean IsOutputTriggered_2 = false;" + "\n @Name('A') insert into EventsWindow select * from Event(not exists (select * from EventsWindow));" + "\n @Name('B') insert into EventsWindow select * from Event(not exists (select * from EventsWindow));" + "\n @Name('C') insert into EventsWindow select * from Event(not exists (select * from EventsWindow));" + "\n @Name('D') insert into EventsWindow select * from Event(not exists (select * from EventsWindow));" + "\n @Name('out') context RuleActivityTime select * from EventsWindow"; epService.getEPAdministrator().getDeploymentAdmin().parseDeploy(epl); epService.getEPAdministrator().getStatement("out").addListener(new SupportUpdateListener()); epService.getEPRuntime().sendEvent(new Event("A1")); }private void sendTimeEvent(String time) { epService.getEPRuntime().sendEvent(new CurrentTimeEvent(SupportDateTime.parseGetMSec(time))); } public static class Event { public Event(String productId) { this.productID = productId; }public String getProductID() { return productID; } } |
Comments |
Comment by Thomas Bernhardt [ 01/Dec/11 ] |
bug fix in branch bugfix440 |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-622] NullPointerException creating a statement selecting from a filled named window that also subqueries Created: 01/Dec/11 Updated: 19/Jan/12 Resolved: 07/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.5.0-preview-1.jar |
Number of attachments : | 1 |
Description |
When creating a statement on a named window that already has events and when that statement contains a subquery the engine raises an NPE. Sample Code engine.getEPAdministrator().createEPL("create window ABC.win:keepall() as SupportBean"); engine.getEPRuntime().sendEvent(new SupportBean("E1", 1)); engine.getEPAdministrator().createEPL("select * from ABC where (select count from ABC) > 0"); ========== Stack Trace |
Comments |
Comment by Thomas Bernhardt [ 07/Dec/11 ] |
bug fix in branch bugfix440 |
Comment by Barry Kaplan [ 17/Dec/11 ] |
The build attached to issue http://jira.codehaus.org/browse/ESPER-624 fixed the problem described in http://old.nabble.com/NPE-after-upgrade-from-4.3-to-4.4-to32878414.html |
Comment by Thomas Bernhardt [ 13/Jan/12 ] |
The 4.5.0-preview-1 is a prerelease of version 4.5 that also corrects this issue. |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-621] Allow outer join with streams that don't provide properties (i.e. pattern timer) Created: 23/Nov/11 Updated: 19/Jan/12 Resolved: 30/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a stream that is part of an outer join does not provide properties, such as "pattern[every timer:at(45,*,*,*,*)]", the outer join doesn't have properties to join on thus the following can currently not be expressed in one statement: select * from pattern[every timer:at(45,*,*,*,*)] as timer left outer join TABLE1 as table1 on timer.??????? = a.?????? Workaround: split in two statements, one that joins TABLE1 and one that joins the remaining table, via insert-into |
Comments |
Comment by Thomas Bernhardt [ 30/Dec/11 ] |
change in enhancements450 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-620] Allow "when terminated" in the output rate limiting clause to have an "and" expression Created: 23/Nov/11 Updated: 19/Jan/12 Resolved: 06/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | epl_clauses.html esper-4.4.0-JIRA620.jar esper-4.4.0-JIRA620-upd1.jar esper-4.4.0-JIRA620-upd2.jar |
Number of attachments : | 4 |
Description |
For example: select * from MyEvent output when count_insert > 4 and when terminated and count_insert > 0 |
Comments |
Comment by Thomas Bernhardt [ 23/Nov/11 ] |
Cumulative jar file "esper-4.4.0-JIRA620.jar" attached addresses the following issues: |
Comment by Thomas Bernhardt [ 27/Nov/11 ] |
The attached "esper-4.4.0-JIRA620-upd1.jar" is an update to JIRA620 (full build).
|
Comment by Thomas Bernhardt [ 27/Nov/11 ] |
The attached "esper-4.4.0-JIRA620-upd2.jar" is an update to JIRA620 (full build).
|
Comment by Thomas Bernhardt [ 06/Dec/11 ] |
changes in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-619] Add a new built-In properties for "output when" that is "count_total" Created: 23/Nov/11 Updated: 19/Jan/12 Resolved: 06/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
See http://esper.codehaus.org/esper-4.4.0/doc/reference/en/html_single/index.html#epl-output-expression The "count_total" carries the total number of events. |
Comments |
Comment by Thomas Bernhardt [ 06/Dec/11 ] |
Changes in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-618] Output-When not executing the "then"-part when triggered by output events Created: 21/Nov/11 Updated: 19/Jan/12 Resolved: 06/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestABC.java |
Number of attachments : | 1 |
Description |
When incoming events trigger an output-when condition and that output-when has a "then" part the "then" part does not execute. To reproduce: The "then" part executes if the variable is explicitly changed and output occurs. It does not seem to execute when output is triggered by arriving events. |
Comments |
Comment by Thomas Bernhardt [ 21/Nov/11 ] |
Test case attached |
Comment by Thomas Bernhardt [ 06/Dec/11 ] |
change in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-617] Insert from POJO-type event to property of named named window not validating Created: 11/Nov/11 Updated: 19/Jan/12 Resolved: 28/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a named window is declared to have a property that is an object of a given type, for example: And when the insert tries to convert the object-event to a property, such as: Then the second statement does not validate, the message is "Event type named 'AllocationWindow' has already been declared with differing column name or type information: Type by name 'AllocationWindow' in property 'tick' expected com.mycompany.Tick but receives event type 'com.mycompany.Tick'" |
Comments |
Comment by Thomas Bernhardt [ 28/Dec/11 ] |
changes in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-616] Allow create-schema and create-window type definition syntax to refer to event type name of POJO-event type Created: 10/Nov/11 Updated: 19/Jan/12 Resolved: 30/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently the following is not supported: The following is fine: The same for create-window syntax. Also, can auto-import be considered, for example: Workaround: as above, use fully-qualified class name |
Comments |
Comment by Thomas Bernhardt [ 11/Nov/11 ] |
There is a difference between these two: 1) creates a window backed by a Map-type that has a single property "tick" of type "Tick" |
Comment by Thomas Bernhardt [ 30/Dec/11 ] |
change in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-615] DeploymentActionException when commenting-out block of statements in deployment via deployment admin Created: 09/Nov/11 Updated: 19/Jan/12 Resolved: 09/Nov/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem can be reproduced as follows: Above throws an exception: DeploymentActionException: Compilation failed in expression '/* abc /' : Unexpected end of input near '/ abc */' [/* abc */] This occurs when a EPL block consists of comments only and no other (or further) statement in in the same module. |
Comments |
Comment by Thomas Bernhardt [ 09/Nov/11 ] |
Bug fix in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-614] Allow named window name to prefix properties in on-merge update set-clause Created: 09/Nov/11 Updated: 19/Jan/12 Resolved: 08/Dec/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Example that returns "Property 'B.previousState' is not available for write access:" Example that is fine: |
Comments |
Comment by Thomas Bernhardt [ 08/Dec/11 ] |
change in bugfix440 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-613] Plug-in aggregation functions can't retain context built from validate method Created: 31/Oct/11 Updated: 19/Jan/12 Resolved: 01/Nov/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.4 |
Fix Version/s: | 4.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Andy Flury | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | extension_release_4.5_proposed.html |
Number of attachments : | 1 |
Description |
In 4.3.0 there was a method newAggregator that could be overridden inside com.espertech.esper.epl.agg.AggregationSupport. This method was used to "Make a new, initalized aggregation state." (it was not documented, text is from javadocs). In 4.3.0 it was possible to "initialize" the Aggregation Function in the validate method (which has access to the AggregationValidationContext). Then the overridden newAggregator method was able to deliver new "copies" of the function. In 4.4.0 this method has disappeared. In 4.4.0 validate is called on one instance of the Aggregation Function during statement validation. Then during the actual event processing new instances are created internally. Problem with this is, that there is no way of passing information gathered from the validate method (from the AggregationValidationContext) to the actual processing. For this reason, it would probably make sense to restore the old (4.3.0) version of AggregationSupport with the method newAggregator added back to it. A potential fix (to be verified) to the internal functionality would be to replace line 47 of ExprPlugInAggFunctionNodeFactory with: |
Comments |
Comment by Thomas Bernhardt [ 31/Oct/11 ] |
This bug is introduced as version 4.4 refactored aggregate state to allow support for context partitions. The suggested potential fix (line 47 of ExprPlugInAggFunctionNodeFactory) would not compile as "newAggregator" is not an method of AggregationSupport or AggregationMethod interface. |
Comment by Thomas Bernhardt [ 31/Oct/11 ] |
We are deprecating AggregationSupport for the next release. The new extension interface that the next version introduces is "AggregationFunctionFactory". The updated chapter of etension doc is attached. The code change has been checked into "enhancements450" branch. |
Comment by Thomas Bernhardt [ 01/Nov/11 ] |
Change in enhancements450 branch |
Comment by Thomas Bernhardt [ 19/Jan/12 ] |
released as 4.5.0 |
[ESPER-612] Add capability for the DeploymentAdmin (manage Modules) to manage modules by user provided name and not by auto generated deployment id Created: 23/Oct/11 Updated: 24/Oct/11 Resolved: 23/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Improvement | Priority: | Major |
Reporter: | Jonathan Hasson | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
N/A |
Number of attachments : | 0 |
Description |
Currently the interface EPDeploymentAdmin supports managing modules by a deployment id which is auto-generated by Esper engine. This limits the client to using the module in one session (unless developing a persistency mechanism for the deployment ids). For example: remove(moduleName) instead of remove(deploymentId) |
Comments |
Comment by Thomas Bernhardt [ 23/Oct/11 ] |
for release 4.4 |
[ESPER-611] ExprValidationException when create from statement object model with SQL join using variable Created: 21/Oct/11 Updated: 24/Oct/11 Resolved: 22/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | charlie arnold | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Before I decided this was a bug, I asked about it on the email list (http://markmail.org/thread/2weiy4zrlsxcrtfl). The issue is this: Testing out the example statements for polling from a database in the docs (http://esper.codehaus.org/esperio-4.3.0/doc/reference/en/html/adapter_db.html), with both 4.2.0 and 4.3.0 (I didn't test any other versions) I got an error /* -------------------- */ /* -------------------- */ /* Error: Error starting statement: Internal error find expression for historical stream parameter 0 stream 1 [@Name('Poll every 5 seconds') insert into PollStream select qry.* from pattern [every timer:interval(5 seconds)], sql:flyq[" select UNIX_TIMESTAMP(timestamp) as ts from MyTable where UNIX_TIMESTAMP(timestamp) > ${VarLastTimestamp} "] as qry] /* -------------------- */ The stacktrace I get is: com.espertech.esper.client.EPStatementException: Error starting statement: Internal error find expression for historical stream parameter 0 stream 1 [@Name('Poll every 5 seconds') insert into PollStream select qry.* from pattern [every timer:interval(5 seconds)], sql:flyq[" select UNIX_TIMESTAMP(timestamp) as ts from MyTable where UNIX_TIMESTAMP(timestamp) > ${VarLastTimestamp} "] as qry] With a little guesswork I was able to work around the issue by swapping the order of the event streams in the "from" clause: /* -------------------- */ /* -------------------- */ '] qry, /* -------------------- */ /* -------------------- */ /* End of Statements */ This works and I get the output I expect (i.e., my UnmatchedListener prints the statements I expect to see). I would be glad to submit any other info that may be helpful .. |
Comments |
Comment by Thomas Bernhardt [ 22/Oct/11 ] |
workarounds are to use EPL text to create the statement or switch streams in from-clause |
[ESPER-610] IllegalStateException for prepared statement with "select * from pattern[[?] Event]" Created: 17/Oct/11 Updated: 24/Oct/11 Resolved: 17/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
If we specify a substitution parameter for the Repeat [match_count] we get a: java.lang.IllegalStateException: Index '1' already found in collection Example: select * from pattern[[?] A] However it does seem that the match_count does allow expressions. The following will work: select * from pattern[[1+1] A] We have a use case, where we would like a statement to notify us, when a specified number of Orders have completed successfully. Since the number of Orders depend an arbitrary user input, it would be nice to be able to use prepared statements here. As a work around we are currently using a variable instead. |
[ESPER-609] Distinct causing null pointer exception on time batch query Created: 16/Oct/11 Updated: 24/Oct/11 Resolved: 17/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Major |
Reporter: | Giltal Tzabar | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | exception | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | SecurityQuotesOneSecondTimeBatch.epl |
Number of attachments : | 1 |
Description |
I wrote the attached query in-order to batch securities tick events into one second events. When i used the query and sent in the tests two events under one second When i used the 'group by symbol' clause in my query and sent in the tests two events under one second When i used the 'group by symbol' clause and the 'DISTINCT' word in my query and sent in the tests two events under one second the result was two new event-beans when one of them got all the calculations and the other holds null values. When i used the 'DISTINCT' word in my query (without 'GROUP BY') and sent in the tests two events under one second java.lang.NullPointerException |
[ESPER-608] Prepared statement referring to variable that is a class (nested property syntax) not working Created: 13/Oct/11 Updated: 24/Oct/11 Resolved: 13/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following exception occurs: Sample to reproduce: package com.algoTrader.test; import java.io.Serializable; import com.espertech.esper.client.Configuration; public class EsperPreparedStatementTest { public static void main(String[] args) throws InterruptedException { Configuration config = new Configuration(); EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); EPPreparedStatement prepared = epService.getEPAdministrator().prepareEPL("select var_a.value from B"); EPStatement statement = epService.getEPAdministrator().create(prepared); statement.setSubscriber(new Object() { }); epService.getEPRuntime().sendEvent(new B()); epService.destroy(); public static class A implements Serializable { public static String getValue() { return ""; }} public static class B { |
Comments |
Comment by Thomas Bernhardt [ 13/Oct/11 ] |
change in branch bugfix430 |
[ESPER-607] Allow wildcard in stat:uni view Created: 10/Oct/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Is there a way to get the entire POJO event in the resultset instead of having to pass each event property seperatly into the stat:uni view? For example, the query below uses the stat:uni view as documented in section 11.3.1. select * from TransactionEvent Instead, I would like to be able to specify the following query and have the entire POJO event available in the result set. select * from TransactionEvent Note: I am using the stat:uni view instead of the average aggregation function with 'group by' because I could not figure out how to group the length window as discussed in the last example of section 4.6.5. |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Changes in enhacements440 branch |
[ESPER-606] Memory leak if creating a large numbers of different event types and using "remove" operation in runtime configuration operations Created: 05/Oct/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When calling "getEPAdministrator().getConfiguration().removeEventType(String)" the event type does not get removed from filters. ============== I am working on an application based on esper that creates and destroys thousands of statements. In just a few words: After debug sessions and dumping heaps during application execution it seems that property eventTypes of com.espertech.esper.filter.EventTypeIndex does not releases 'some' objects. Also heap dumps show the same findings, objects hold in eventTypes. By running in debug mode with esper source code in step 2 there is a call to A simple project to replicate above findings: structure: ========== pom.xml ========== <modelVersion>4.0.0</modelVersion> <properties> <dependencies> </version> </project> ========== EventTypeIndexTest ========== package org.test; import org.apache.commons.logging.Log; import com.espertech.esper.client.EPAdministrator; public class EventTypeIndexTest { private static final Log LOG = LogFactory.getLog(EventTypeIndexTest.class); private String INSERT_QUERY = "insert into Stream_id_key select * from org.test.domain.StreamEvent(id=id_key)"; private int numberOfStatements = 1; public static void main(String[] a) { try { new EventTypeIndexTest().runTest(); }catch (Exception e) { e.printStackTrace(); }} public void runTest() throws Exception { EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); for(int iteration = 1;iteration < numberOfIterations;iteration++) { for(int k =1000000*iteration ; k < 1000000*iteration + numberOfStatements; k++) { admin.createEPL(INSERT_QUERY.replaceAll("id_key", Integer.toString(k)), "insert_"+Integer.toString(k)); admin.createEPL(SELECT_QUERY.replaceAll("id_key", Integer.toString(k)), "select_"+Integer.toString(k)); } LOG.info("Number of statements in esper = " + epService.getEPAdministrator().getStatementNames().length); LOG.info("Destroy statements & remove event types"); for(int k =1000000*iteration ; k < 1000000*iteration + numberOfStatements; k++) { epService.getEPAdministrator().getStatement("insert_"+Integer.toString(k)).destroy(); epService.getEPAdministrator().getStatement("select_"+Integer.toString(k)).destroy(); }LOG.info("Number of statements in esper after destroy = " + epService.getEPAdministrator().getStatementNames().length); for(int k =1000000*iteration ; k < 1000000*iteration + numberOfStatements; k++) { epService.getEPAdministrator().getConfiguration().removeEventType("Stream_"+Integer.toString(k), true); }LOG.info("Number of event types in esper after remove = " + epService.getEPAdministrator().getConfiguration().getEventTypes().length); /*System.gc(); ); LOG.info("=== END ITERATION " + iteration + " ==="); } ========== StreamEvent ========== public class StreamEvent { private int id; public StreamEvent(int id) { this.id = id; }public int getId() { return id; }public String toString() { return new StringBuilder(this.getClass().getSimpleName()) .append(" [ id = ").append(this.getId()) .append("]").toString(); }} ========== HeapDumper ========== import javax.management.MBeanServer; /**
// field to store the hotspot diagnostic MBean static void dumpHeap(String fileName, boolean live) { catch (Exception re) { re.printStackTrace(); }} // initialize the hotspot diagnostic MBean field } // get the hotspot diagnostic MBean from the catch (RuntimeException re) { throw re; }catch (Exception exp) { throw new RuntimeException(exp); }} public static void main(String[] args) { // simple command line options // dump the heap |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Change in bugfix430 branch |
[ESPER-605] Allow empty selection list Created: 30/Sep/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Allowing an empty select clause and allowing subscribers that have an update method without any parameters makes sense for certain Spring-injected subscribers. For example: select void from ... |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Changes in bugfix430 branch |
[ESPER-604] epl_clauses.xml documentation patch Created: 23/Sep/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | charlie arnold | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | diff |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
There are some cases where the documentation doesn't seem to be correct; here's a small patch of what seems wrong. |
[ESPER-603] NPE in match-recognize when reg-ex pattern event is optional and doesn't have a definition Created: 13/Sep/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem occurs when in match-recognize an event is optional, i.e. "A?", and does not have a definition. To reproduce (B is optional): Configuration config = SupportConfigFactory.getConfiguration(); EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); String epl = "select * from A\n" + EPStatement stmt = epService.getEPAdministrator().createEPL(epl); |
[ESPER-602] Reduce memory use when large number of threads send events - ThreadLocal use Created: 12/Sep/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For patterns an instance of ExprNodeAdapter uses a non-static ThreadLocal, when the number of threads is large this could use more memory then necessary as a small array of events is retained. Can be made a static ThreadLocal. |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Part of refactoring done for 4.4 release in enhancements440 branch |
[ESPER-601] Deadlock when an UnmatchedListener creates a new statement Created: 01/Sep/11 Updated: 11/Feb/12 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The deadlock occurs an UnmatchedListener is provided and the UnmatchedListener implementation attempts to create a new statement. Workaround: add new statement to queue and let another thread create the new statement. Sample code to reproduce: <pre> public void testIt() { EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(); engine.getEPAdministrator().getConfiguration().addEventType(MyEvent.class); MyUnmatchedListener listener = new MyUnmatchedListener(engine); engine.getEPRuntime().setUnmatchedListener(listener); engine.getEPRuntime().sendEvent(new MyEvent()); } private static class MyEvent { private static class MyUnmatchedListener implements UnmatchedListener { private final EPServiceProvider engine; private MyUnmatchedListener(EPServiceProvider engine) { this.engine = engine; }public void update(EventBean event) { engine.getEPAdministrator().createEPL("select * from MyEvent"); } } |
Comments |
Comment by uttkrant [ 11/Feb/12 ] |
This issue still occurs quite erratically in Esper 4.4.0. The deadlock occurs not only due to unmatched listener, it also appears when any listener creates a pattern on receiving update event. Esper has been configured with inbound and outbound threadpools of size 10. On receiving an event, the outbound thread calls the listener which in turn creates a new pattern. This gets stuck due to deadlock Below is the jstack log for this, which should point to the issue. The issue appears to be that ManagedReadWriteLock is trying to writelock where readlock is already acquired by inbound threads "com.espertech.esper.Outbound-MGZ-8" daemon prio=10 tid=0x5f65d000 nid=0x1bf3 waiting on condition [0x5e583000]
"com.espertech.esper.Inbound-MGZ-0" daemon prio=10 tid=0x61ae9800 nid=0x1be1 waiting on condition [0x6296b000]
|
[ESPER-600] Memory leak with "group by", "order by" and a lot of different group by keys Created: 29/Aug/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Samuel Benz | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I use Esper for real time statistics of a socket server. Unfortunately, after some days, my server runs in a OutOfMemory-Exception. The memory leak is caused by the "newGenerators" Map in the ResultSetProcessorRowPerGroup class. More detailed, the map is filled up by three methods in the "isSorted" code path. But as I can see, the map is never read or cleand. The problem is triggered only when you will use a "group by" statement with an "order by" while you have a lot of different group by keys (eg. srcIP-dstIP pairs). For me, this seems to be a bug. By the way, comment out the different map.put() did not affect the "order by" functionality. |
Comments |
Comment by Thomas Bernhardt [ 29/Aug/11 ] |
Did you read http://esper.codehaus.org/esper-4.3.0/doc/reference/en/html_single/index.html#epl-grouping-group-by |
Comment by Samuel Benz [ 29/Aug/11 ] |
Yes I read it already. I use the group-by with a time_batch window. All events are cleaned correctly after the time_batch timed out. So I have enough memory to hold all events during the time window. |
Comment by Thomas Bernhardt [ 29/Aug/11 ] |
Can you please put the EPL statement text into the comment? Are you using the @Hint? It would be required to use the @Hint since the engine has no way of finding out the group is unused. |
Comment by Samuel Benz [ 29/Aug/11 ] |
"@Hint(\"reclaim_group_aged=60,reclaim_group_freq=30\") select from_ip, to_ip, cid, count as count from QFlow.win:time_batch("10 sec") group by from_ip, to_ip, cid having count > 0 order by count desc" With this statement, the "newGenerators" Map in the "ResultSetProcessorRowPerGroup" class still grows endlessly. |
Comment by Thomas Bernhardt [ 29/Aug/11 ] |
ok thanks for clarifying. Workaround: don't add "order by" clause |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Thanks for the analysis. Release 4.4 on Oct. 24 will have the change. |
[ESPER-599] Aggregation functions 'first' and 'last' with index are represented incorrectly when converted back to EPL Created: 12/Aug/11 Updated: 24/Oct/11 Resolved: 13/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.3 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Juan Lopes | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | fix_projection_expression_base_epl_repr.diff |
Testcase included: | yes |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
When compiling an expression with indexed 'first' or 'last' functions with index specification, their representation back to EPL is created without the index. That is: "select last(prop, 1) from Stream" when compiled, and called toEPL(), becomes "select last(prop) from Stream". This cause problems when more than one auto-named last call is included in select clause. Patch with possible solution and tests attached. |
Comments |
Comment by Thomas Bernhardt [ 13/Oct/11 ] |
Change in bugfix430 branch |
[ESPER-598] Copy type information using create schema Created: 05/Aug/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 4.4 |
Type: | Improvement | Priority: | Minor |
Reporter: | James Sheridan | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'd like to define a schema based on another schema. It might also be nice be able to extend the properties also, eg |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Change in enhancements440 branch |
[ESPER-597] example code error in documentation Created: 05/Aug/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Trivial |
Reporter: | Michal Oskera (Mycroft Mind) | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It is about example in the section 6.4.3. Alternation. It says: select * from TemperatureSensorEvent In my opinion, there is an error in the last row of the example where the subtraction should be 'C.temp - A.temp' instead of 'B.temp - A.temp'. |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
thanks for reporting this |
[ESPER-596] Provide documentation in .epub format for ereaders Created: 04/Aug/11 Updated: 26/Sep/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 4.3 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It was suggested providing the Esper/NEsper documentation in .epub format for ereaders. The single page html version for NEsper converted pretty cleanly using Calibre. |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Assigned to version 5 |
[ESPER-595] Two statements with identical stream and "prev" function not delivering expected events Created: 31/Jul/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following statement and code reproduces the problem. @Test String text = "select bid, ask, \n" + }; public static class OuterEvent { public Double getAsk() { return ask; }public Double getBid() { return bid; }} |
Comments |
Comment by Thomas Bernhardt [ 01/Aug/11 ] |
Workaround is to disable view sharing: |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
fixed in enhancements440 branch (no change) |
[ESPER-594] Exception starting statement with @Audit and groupwin Created: 31/Jul/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following code: Causes the following exception: There is no workaround other then not specifying @Audit. |
[ESPER-593] Add table to documentation outlining tradeoffs between different event types Created: 31/Jul/11 Updated: 14/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
[ESPER-592] Statements are not able to get GCed when using Force Update Created: 27/Jul/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Anoop Sam John | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have a scenario of creating a set of statements ( create time batch window ,insert statements and select aggregated value). With the create window statement I am using force update clause. I will be keep on sending the events and the inserts and selects are happening fine. As per the business needs these statements needs to be removed also. At the time of removal I am destroying the statements . |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
change in bugfix430 branch |
[ESPER-591] Exception "Attempting to remove key from map that wasn't added" in RefCountedSet. Created: 24/Jul/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A user reports the mentioned exception raised by the following query: insert into town select |
Comments |
Comment by Thomas Bernhardt [ 24/Jul/11 ] |
Alternative query designs: You could write with 3 statement such as: Or use the new filtered aggregation syntax if bluehouse and redhouse inherit from the same event |
[ESPER-590] Allow configuration of fair locking for administrative functions excluding event processing Created: 24/Jul/11 Updated: 24/Oct/11 Resolved: 24/Jul/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | 4.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 24/Jul/11 ] |
change in bugfix430 branch |
[ESPER-589] Allow escape syntax for select-clause expression name syntax Created: 21/Jul/11 Updated: 03/Dec/13 Resolved: 03/Dec/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
According to chapter 2.2.1. Escape Characters it is possible to escape event properties that correspond to reserved keywords. Example: select `order` from Quote Unfortunately it is not possible to insert into a property that is equal to a reserved keyword: select xxx as `order` into Quote Also consider: insert into ABC('order', field2, field3...) select ... It looks like the StatementSpecCompiled.selectClauseSpec is currently holding the escaped property (`order`) instead of the actual property (order) |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Still looking into this, assigned to 5.0 release. Note that in the example provided 'order' is a reserved keyword versus a identifier-allowed-keyword which is listed explicitly in the EPL doc. |
Comment by Thomas Bernhardt [ 03/Dec/13 ] |
Duplicate to |
[ESPER-588] New "rank" aggregation function that also allows a filters Created: 21/Jul/11 Updated: 26/Sep/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.3 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Suggestion: the new filter expressions from 4.3 inside aggregates could be used to support a rank() aggregate. rank(property, boolean direction, boolean expr) would return an integer eg: rank(price, false, model='Ford') would return the position of the most Currently if you want to find if something is in the top 10 by value and std.groupwin(model).ext.sort(10, price desc) |
Comments |
Comment by Mitch [ 21/Jul/11 ] |
Might be worth putting some thought into how to deal with tied ranks. There is the mode I suggested above and there is the mode where 3.5 would be returned if, for example, third and fourth position had same value- as used in non-parametric statistics. Both forms might be useful. |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Would you have an example implementation? |
[ESPER-587] groupwin EPStatementException text Created: 19/Jul/11 Updated: 24/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.4 |
Type: | Bug | Priority: | Trivial |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Exception text should refer to groupwin not group-by: com.espertech.esper.client.EPStatementException: Error starting statement: The group-by view must occur in the first position in conjuntion with multiple data windows I'm guessing there may be other exceptions still referring to group-by |
[ESPER-586] Crontab-schedule when use with list-parameter and zero give incorrect results Created: 18/Jul/11 Updated: 18/Jul/11 Resolved: 18/Jul/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This trigger every second however should trigger every 10 seconds: When leaving "0" from the list the crontab behaves fine. |
Comments |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
Workaround is to use "at (,,,,,/10)" |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-585] On-merge not dispatching if input stream is also from named window Created: 08/Jul/11 Updated: 18/Jul/11 Resolved: 08/Jul/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I use an upsert statement, but when I do a select on the upserted stream I don't receive any events. Example create window summedstream.std:unique(id) as (id Integer, score Double); create window rankedstream.std:unique(id) as (id Integer, score Double, type String); This works as I can see that events get updated and inserted. But when I do a select, e.g. I don't get any results: |
Comments |
Comment by Thomas Bernhardt [ 08/Jul/11 ] |
Workaround: insert into YetAnotherStream select * from summedstream on YetAnotherStream merge rankedstream.... |
Comment by Thomas Bernhardt [ 08/Jul/11 ] |
change in bugfix420 branch |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-584] Filter expression with relational op and constant not matching Created: 29/Jun/11 Updated: 18/Jul/11 Resolved: 29/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a filter is written as: select * From TestEvent where 3 < x When "x=4" the filter above does not match. When written as "select * From TestEvent where x > 3" the filter matches. |
Comments |
Comment by Thomas Bernhardt [ 29/Jun/11 ] |
Change in bugfix420 branch |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-583] Support for filtering aggregation functions Created: 27/Jun/11 Updated: 18/Jul/11 Resolved: 28/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | filteragg.tar.gz filteragg.tar.gz filteragg.tar.gz FilterCountAggregator.java FilterLastAggregator.java FilterSumAggregator.java |
Number of attachments : | 6 |
Description |
I have implemented a set of aggregate plugins which do filtering on select fsum(quantity, side='buy') as buy_total from TXN_WINDOW This example will sum over the window only including quantities where the Example use case: In general the form is aggregate(value expression, boolean expression) I have found these to be very handy and wonder if other people would find I did raise this suggestion in passing in another thread but it was somewhat |
Comments |
Comment by Mitch [ 27/Jun/11 ] |
three sample filtering aggregates |
Comment by Mitch [ 27/Jun/11 ] |
Have attached code for fsum, flast and fcount which works with 4.1 and above- should be possible to extrapolate to other aggregates from these. |
Comment by Mitch [ 27/Jun/11 ] |
try again |
Comment by Mitch [ 27/Jun/11 ] |
third time lucky? |
Comment by Mitch [ 27/Jun/11 ] |
sending files individually |
Comment by Mitch [ 27/Jun/11 ] |
not sure if this one is tested properly |
Comment by Mitch [ 27/Jun/11 ] |
last one... |
Comment by Thomas Bernhardt [ 27/Jun/11 ] |
Thank you for sharing this idea once more. |
Comment by Thomas Bernhardt [ 27/Jun/11 ] |
Since there are single-row functions for "max" and "min" that can take any number of parameters, the engine would not be able to distinguish between "max(field, filter_expression)" and "max(field, field)". |
Comment by Thomas Bernhardt [ 28/Jun/11 ] |
Changes in enhancements430 branch |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-582] Error parsing reserved keyword "last" inside a function call Created: 27/Jun/11 Updated: 18/Jul/11 Resolved: 29/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
linux java 6 |
Number of attachments : | 0 |
Description |
"Math.abs( last(quantity) )" will not parse- see err below. This bug is new in 4.2. com.espertech.esper.client.EPStatementSyntaxException: Incorrect syntax near '(' ('last' is a reserved keyword) expecting a closing parenthesis ')' but found an opening parenthesis '(' at line 1 column 21, please check the select clause [select Math.abs( last(quantity) ) from MyEvent.win:length(3)] workaround- wrap nested last() functions in parentheses. Mitch |
Comments |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-581] rownum() function (multiple update listener version) Created: 19/Jun/11 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | None |
Fix Version/s: | 5.0 |
Type: | Wish | Priority: | Minor |
Reporter: | Andreas bauer | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A function for numbering the events when a listener gets invoked. In this version of the function, the numbering continue everytime the same update listener gets invoked. The numbering should be based on ordering or on event arrival. The start (0,1,2..n) of the numbering should be configurable as well as the increment. |
Comments |
Comment by Thomas Bernhardt [ 27/Jun/11 ] |
It seems that update listener code could also assign a row number. |
Comment by Andreas bauer [ 07/Jul/11 ] |
It's more or less about convenience. With this function in place, I can just add and remove it from a statement. Otherwise I have to explicitly add an RowNumEPA everytime I need I an event number. And as I'm working a lot directly with statements without an implemented EPA in between, this would make life a lot easier, if I didn't have to switch from one paradigm (EPL) to the other (Java). |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Assigned to version 5 |
[ESPER-580] rownum() function Created: 19/Jun/11 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Wish | Priority: | Minor |
Reporter: | Andreas bauer | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A function for numbering the events when a listener gets invoked. In this version of the function, the numbering should start over again, everytime the update listener gets invoked. The numbering should be based on ordering or on event arrival. The start (0,1,2..n) of the numbering should be configurable as well as the increment. |
Comments |
Comment by Thomas Bernhardt [ 27/Jun/11 ] |
It seems that update listener code could also assign a row number. |
Comment by Andreas bauer [ 07/Jul/11 ] |
It's more or less about convenience. With this function in place, I can just add and remove it from a statement. Otherwise I have to explicitly add an RowNumEPA everytime I need I an event number. And as I'm working a lot directly with statements without an implemented EPA in between, this would make life a lot easier, if I didn't have to switch from one paradigm (EPL) to the other (Java). |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
Assigned to version 5 release |
Comment by Thomas Bernhardt [ 21/May/12 ] |
can easily be accomplished by listener, closing issue |
[ESPER-579] Memory leak if creating and removing a large numbers of different event types Created: 17/Jun/11 Updated: 18/Jul/11 Resolved: 29/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Anoop Sam John | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have a scenario of creating a set of statements ( create time batch window ,insert statements and select aggregated value) |
Comments |
Comment by Thomas Bernhardt [ 17/Jun/11 ] |
If you force removal then the engine does not guarantee that no reference is left behind. You should determine which statements depend on the type (an API for that is available) and destroy all statements that depend on the type. Then "force" will not be necessary and a clean removal occurs. |
Comment by Anoop Sam John [ 17/Jun/11 ] |
Hi In class com.espertech.esper.filter.EventTypeIndex , which maps FilterHandleSetNode against EventType, it is clear that the entries will not get removed even if the EventType I am removing explictly. There is no code in this class which removes data from the HashMap [ private Map<EventType, FilterHandleSetNode> eventTypes; ] In my testing scenario I will be running the engine for long time and during which statements will get added and then removed. ( I am creating a set of statements as per my business rule and when business rule is de-registered I am destroying the statements also ) At removal I am removing EventType using the API as mentioned above. This API removes EventType related entries from EventAdapterService. ( I have seen the code ). But the map in EventTypeIndex is not getting removed with this data and this map's size keep on growing as I add and remove my rules ( statements ) |
Comment by Thomas Bernhardt [ 17/Jun/11 ] |
Reopened, it is correct that an event type may not be removed from this index. |
Comment by Anoop Sam John [ 18/Jun/11 ] |
Please consider this comment also Pls consider this point also along with this issue Thanks |
Comment by Thomas Bernhardt [ 29/Jun/11 ] |
change in bugfix420 branch |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-578] Allowing transposing the result of an aggregation function to a stream Created: 16/Jun/11 Updated: 18/Jul/11 Resolved: 29/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have developed a custom Aggregate Function which returns Java-Objects (POJO's) Is there a way of transposing those returned objects onto a stream? See following Examle: insert into NewEvent select custom(event.value).* from Event as event; |
Comments |
Comment by Thomas Bernhardt [ 16/Jun/11 ] |
Workaround is to transpose as a property and not as a stream, for example: insert into ABC select custom(event.val) as myprop from Event |
Comment by Petar Dimitrov [ 16/Jun/11 ] |
I've noticed that the same applies to any custom function and to subqueries returning POJOs. It would also be nice to handle functions and subqueries returning arrays (as in "select mypackage.myFunction(a,b,c)[0] from ..."). |
Comment by Thomas Bernhardt [ 29/Jun/11 ] |
The design for version 4.3 adds a new "transpose" function. There are reasons for staying away from ".*" syntax for anything but stream names and property names...it seems to make syntax look ugly. So the design is: |
Comment by Thomas Bernhardt [ 29/Jun/11 ] |
change in enhancements430 branch |
Comment by Thomas Bernhardt [ 29/Jun/11 ] |
The "mypackage.myFunction(a,b,c)[0]" requirements can be solved with "mypackage.myFunction(a,b,c).get(0)" |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-577] Allow chained method invocation on cast() result Created: 13/Jun/11 Updated: 18/Jul/11 Resolved: 29/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Andy Flury [ 13/Jun/11 ] |
example: |
Comment by Thomas Bernhardt [ 29/Jun/11 ] |
change in enhancements430 branch |
Comment by Thomas Bernhardt [ 29/Jun/11 ] |
>> Would this also be done with the new "transpose" function mentioned in 578? No just the same syntax as mentioned: cast(expression, Class).doSomething() |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-576] Expose API to dynamically register new views Created: 13/Jun/11 Updated: 18/Jul/11 Resolved: 27/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 27/Jun/11 ] |
change in enhancement430 branch |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-575] (.NET) NEsper - invalid call to static method Created: 08/Jun/11 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 4.1 |
Fix Version/s: | .NET NEsper 4.4.0 |
Type: | Bug | Priority: | Trivial |
Reporter: | Lloyd A Berube | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In NEsper-4.1.0\src\NEsper\NEsper\compat\magic\MagicType.cs The following line throws "ArgumentException : Static method requires null instance, non-static method requires non-null instance." if the method is static: var eMethod = Expression.Call(eCast1, methodInfo); Could write instead var eMethod = Expression.Call((methodInfo.IsStatic) ? null : eCast1, methodInfo); |
[ESPER-574] Timer:interval pattern observer when a subquery is the parameter throws NPE Created: 06/Jun/11 Updated: 18/Jul/11 Resolved: 29/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample EPL: Exception in thread "main" com.espertech.esper.client.EPStatementException: Unexpected error compiling statement: java.lang.NullPointerException:null |
Comments |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-573] Improve statement checking for on-merge "not matched" clause to not allow access to named window properties when subquery Created: 03/Jun/11 Updated: 18/Jul/11 Resolved: 29/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample statement: on CPEEvent as cpe Note that this is a not-matched clause thereby "joinevent" cannot exist however query compilation lets this query pass. |
Comments |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-572] Short-circuit evaluation not always performed for filters Created: 01/Jun/11 Updated: 18/Jul/11 Resolved: 29/Jun/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | FilterOrderTest.java MyEvent.java |
Number of attachments : | 2 |
Description |
> Does esper enable filter short circuiting? Are filters called in order? Attached test files. My example runs the following EPL: select * from MyEvent(MyEvent.property2 = '4' and MyEvent.property1 = '1') Note the filter: for other checks the engine will perform short-circuit, filter optimization however may remove that (where-clause rewrite to filter may also apply) |
Comments |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-571] NPE for fully-aggregated and ungrouped query with having clause that selects a non-aggregated property Created: 06/May/11 Updated: 18/Jul/11 Resolved: 07/May/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem occurs when the select-clause is fully-aggregated (all properties under aggregation) and no group-by and when the having-clause has a property that is not aggregated, for example: select max(val)-min(val) The stack trace, during event evaluation, is as follows: Sample code: |
Comments |
Comment by Thomas Bernhardt [ 06/May/11 ] |
Workaround: add group-by, or replace un-aggregated property in having-clause with a variable or function, or change select clause to "*" for example |
Comment by Thomas Bernhardt [ 07/May/11 ] |
change in branch bugfix420 |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-570] 3-way inner join and using outer-join notation not working when where-clause added Created: 20/Apr/11 Updated: 18/Jul/11 Resolved: 21/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Petar Dimitrov | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperTest3.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
I am observing a weird (and somehow dangerous) behavior of the WHERE clause in the new Esper 4.2 release. The presence of it seems to modify the behavior of INNER JOIN-s and produce more results than necessary. In the following example, the WinProductOwnerDetails named window only contains a single record. This query properly returns a single row: select WinProduct.productId from WinProduct inner join WinCategory on WinProduct.categoryId=WinCategory.categoryId inner join WinProductOwnerDetails on WinProduct.productId=WinProductOwnerDetails.productId But, if a where clause is added to it, the query now produces a row for each record in WinProduct: select WinProduct.productId from WinProduct inner join WinCategory on WinProduct.categoryId=WinCategory.categoryId inner join WinProductOwnerDetails on WinProduct.productId=WinProductOwnerDetails.productId where WinCategory.owner=WinProductOwnerDetails.owner If I substitute WHERE with HAVING the query again properly returns a single row: select WinProduct.productId from WinProduct inner join WinCategory on WinProduct.categoryId=WinCategory.categoryId inner join WinProductOwnerDetails on WinProduct.productId=WinProductOwnerDetails.productId having WinCategory.owner=WinProductOwnerDetails.owner This behavior holds for both adhoc queries and statement listeners. This is only present in the latest 4.2 release. Testing this with Esper 4.1 produces the proper and expected results. I am attaching a small test case to illustrate the problem. |
Comments |
Comment by Thomas Bernhardt [ 21/Apr/11 ] |
Workaround is to formulate as a join instead, not using the outer-join syntax with "on": select WinProduct.productId |
Comment by Thomas Bernhardt [ 21/Apr/11 ] |
Updated to minor: workaround available |
Comment by Thomas Bernhardt [ 21/Apr/11 ] |
Applies only to all-inner-joins using outer-join notation (i.e. with on-clause) and 3 or more streams. |
Comment by Thomas Bernhardt [ 21/Apr/11 ] |
Bug fix in bugfix420 branch |
Comment by Petar Dimitrov [ 21/Apr/11 ] |
Tom, Was there a significant change in version 4.2 vs 4.1 that created this issue? My sample looks pretty trivial because I wanted to create a very specific and small test case to illustrate the problem. In reality, we use this kind of joins very often for both on-demand queries and internal event processing. The moment I switched the esper 4.1 jar with esper 4.2, my development environment crashed within a minute. Here is the real world EPL (note that this is not an on-demand query): select ... The BSignalWin receives a new event about once a second. Whenever the event/signal is received, we need to apply it to all relevant instruments, gathering the greeks for the proper volatility surface (in this case a defaultSurface is defined based on the instrument's underlying). Adding the "U.defaultSurface=G.surface" condition in the join is also not an option in this case (Esper will complain with a "Outer join ON-clause columns must refer to properties of the same joined streams when using multiple columns in the on-clause" error). This query used to generate about 700 events per second in version 4.1. With the new release, the query started generating over 1 million events per second! And they are not just duplicates, but actually wrong because they do not satisfy the join contract. |
Comment by Thomas Bernhardt [ 21/Apr/11 ] |
Prior to 4.2 the outer-join query planner would process this query as it is formulated as an outer join. However the query is really a regular join, as suggested in the workaround. With 4.2 the regular join query planner is used and plans the query the same way as a regular join, however failed to rewrite the on-clauses into the where-clause. With 4.2 the query planning has been overworked significantly allowing hints and recognizing more operators, and this was one of the refactorings. Our test suite covers joins rather well however missed this test case. |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-569] Null-value comparison for "not/equals"-operator (!=, =) not fully consistent with SQL standard Created: 20/Apr/11 Updated: 18/Jul/11 Resolved: 20/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.2 |
Fix Version/s: | 4.3 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In version 4.3, the expression "property = NULL" always returns null. Use "property is NULL" instead to compare against null values. In version 4.2 and earlier, the expression "property = NULL" compares the property against null and returns true/false. More examples: 1) "select 2 != null" returns null in version 4.3 (in version 4.2 it returns true) Use "is null" or "is not null" instead. |
Comments |
Comment by Thomas Bernhardt [ 18/Jul/11 ] |
release 4.3 completed |
[ESPER-568] Duplicate remove stream events posted from intersection-data window when used with on-update (named window only) Created: 19/Apr/11 Updated: 19/Apr/11 Resolved: 19/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample statement: HashMap<String, Object> eventOne = createEvent("AComp", 3.0, 0.0); HashMap<String, Object> eventTwo = createEvent("AComp", 6.0, 0.0); // the result of "select count" statement must be 1. |
Comments |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-567] Time batch window - Select query not fired when no data pushed into window in batch time and FORCE_UPDATE is true Created: 19/Apr/11 Updated: 07/May/11 Resolved: 07/May/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Anoop Sam John | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have statements to create a time batch window with FORCE_UPDATE mode. I want the statements associated with this window to get executed in batch interval even if not sending any events. I have a select statement associated with this window in which I have null check also for the aggregate value. WHen it is null I want to know this in the listener associated with the select statement. if ( !currentBatch.isEmpty()) { newData = currentBatch.toArray(new EventBean[currentBatch.size()]); }if ((lastBatch != null) && (!lastBatch.isEmpty())) { oldData = lastBatch.toArray(new EventBean[lastBatch.size()]); }if ((newData != null) || (oldData != null) || (isForceOutput)) { updateChildren(newData, oldData); } } } It would have worked. Pls see |
Comments |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
Can you please attached a small test case that demonstrates the problem? |
Comment by Anoop Sam John [ 19/Apr/11 ] |
Hi, These are the statements created. I have an impl for UpdateListener which is attached with the selectQuery statement. public double getCpu() { return cpu; }public String getEventSource() { return eventSource; }public Double getMmy () { return mmy; }} When no events are reaching in the interval 10secs also I want a business logic and for that I need to get -1 in the listener. But this is not happening with the time batch window. |
Comment by Thomas Bernhardt [ 07/May/11 ] |
FORCE_UPDATE only posts events to the listeners of the statement itself, but your select is listening to the named window. |
[ESPER-566] First Aggregation Function Returns Wrong (Growing) Result When Used in Correlated Subquery Created: 12/Apr/11 Updated: 19/Apr/11 Resolved: 16/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Major |
Reporter: | Heiko Selber | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Mac OSX 10.6.7, Java 1.6.0_24, Eclipse 3.6.1, Junit 4.8.2 |
Attachments: | exercise.esp ExerciseTest.java |
Testcase included: | yes |
Number of attachments : | 2 |
Description |
See attachments: A JUnit test ExerciseTest.java which inserts events ("measurements") into a simple Esper statement (exercise.esp). The first event has a timestamp of 0 and a "value" of 0.0. However, the first function returns (unpredictably) growing values instead of the first one. In the test case, the update listener inserts a couple of diagnostic values into arrays which are printed and verified at the end (after inserting 10 events). The assertions for time and fm_values fail. It seems that the pointer to first increases occasionally. Sometimes (perhaps once in 10 runs) the test passes. This bug seems to be related to |
Comments |
Comment by Thomas Bernhardt [ 12/Apr/11 ] |
Could you please simplify the EPL and code such that it proves the point (first(...) not returning the right result?) and remove all other unrelated constructs and assertions. |
Comment by Heiko Selber [ 12/Apr/11 ] |
Uploaded smaller versions of the JUnit and EPL files. I removed as much as I could (with my so far limited knowledge of Esper). It seems that the call to std:groupwin() is significant. The test runs (i.e. first() works correctly) if it is removed. (The call to groupwin doesn't change the result of the query with the test data, but it is needed in my real use case.) |
Comment by Thomas Bernhardt [ 13/Apr/11 ] |
First() returns the first per group according to the group-by clause (and not the grouped-data-window). |
Comment by Heiko Selber [ 14/Apr/11 ] |
Hm.. I don't know if I understand your comment. I don't think it has anything to do with the issue. I'm not using a group-by clause. And I do expect that first() returns the first event in a group/window/stream (forgive me if I struggle with the nomenclature). Why should it return a later event? In the attached example, I would expect that these two statements return exactly the same if Measurement.source is equal for all events: with groupwin [...] from Measurement.std:groupwin(source).win:ext_timed(date.time, 240 minutes) as m [...] without groupwin [...] from Measurement.win:ext_timed(date.time, 240 minutes) as m [...] But the attached unit test shows that they don't. Am I making wrong assumptions? |
Comment by Thomas Bernhardt [ 14/Apr/11 ] |
"First" is an aggregation function. You can compare that to "prev" or "prior" which are single-row functions. |
Comment by Thomas Bernhardt [ 16/Apr/11 ] |
Thanks Heiko, the test case demonstrates the point well and there is a problem. Its assigned for version 4.2 release. |
Comment by Heiko Selber [ 18/Apr/11 ] |
Ah, what a relief! Your previous comment made me wonder whether I got something completely wrong. (I mean I did get something wrong for sure, but apparently not everything |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-565] Question regarding esper variables and 'output when' Created: 05/Apr/11 Updated: 10/Apr/11 Resolved: 10/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Major |
Reporter: | Scott Frenkiel | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
We have a situation where we are aggregating a set of events down to a smaller set of derived events. For efficiency, we avoid intermediate results by using 'output last when' and setting a variable when we are ready to emit the derived events. The problem is, it appears that merely setting the variable is not sufficient to cause the esper engine to emit the derived events. I have found that, after setting the variable, esper won't emit derived events until either 1) a subsequent event comes in, or 2) (using external timing) an external timing event occurs. Depending on subsequent events is non-deterministic, and using external timing results in a lot of 'Duplicate time' errors in our logs. I'm wondering if there is a cleaner approach. If not, perhaps esper can be changed such that setVariableValue() causes esper to evaluate related 'output when' clauses, with no subsequent action required? |
Comments |
Comment by Thomas Bernhardt [ 06/Apr/11 ] |
For reference, the doc section is "4.7.1.1. Controlling Output Using an Expression" |
Comment by Scott Frenkiel [ 06/Apr/11 ] |
Thanks, Thomas. Some more detail: the way our data is aggregated is controlled by the end-user; we currently have a situation where several types are aggregated once, then that aggregated data is itself aggregated again. To ensure that everything happens in the correct order, each event type has its own variable, and each variable change is separated by it's own timing event. This means there are lots of timing events and we usually get duplicate time events in the logs, which look sloppy. I suppose the alternative is to invent a 'prod' event, which we could inject between variable changes. To me, though, both approaches feel a little heavy-handed. I understand that variable changes don't always need to result in event processing, but I wonder if esper could track those variables which are tied to 'output when' clauses, or similar, to decide if additional processing is warranted when those variables change. |
Comment by Thomas Bernhardt [ 06/Apr/11 ] |
The tracking of variable changes already occurs: In more detail when the variable changes and the output-when expression evaluates to true the statement registers a callback with scheduling to make the output "next time". This is to prevent the thread that sets the variable to perform the output, and leaves it to the event-sending or timer thread(s) to perform the output (as always). |
Comment by Scott Frenkiel [ 06/Apr/11 ] |
I see. I think I'll convert to using artificial 'prod' events rather than external timing. Thanks for your time. |
[ESPER-564] Subquery of identical event stream does not include most recent event in window aggregate Created: 28/Mar/11 Updated: 19/Apr/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Major |
Reporter: | Richard O'Brien | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
WinXPx64, JRE 1.6.24 |
Attachments: | TradeEventTest.java |
Number of attachments : | 1 |
Description |
When I have a query that tries to compare windows of differing lengths of the same event stream, the subquery window does not contain the most recent event. For instance: SELECT current_timestamp, window(tl.*) as longItems, in the above query, I would expect the update to receive identical TradeEvent[] arrays. That is the case only if no other EPL statements have subscribed to the TradeEventTest stream. However, when/if I do add another EPL, the 'tl' stream will update with length n and the 'ts' subquery window will have length n-1. The intended logic is to use differing win:time lengths, however, this example is made most clear when using identical lengths that the window should be the same length. I've attached complete source that demonstrates the issue. |
Comments |
Comment by Thomas Bernhardt [ 28/Mar/11 ] |
There is a subquery evaluation order flag in the configuration, have you tried that? |
Comment by Richard O'Brien [ 28/Mar/11 ] |
Additionally, the 2nd EPL that queries TradeEventTest must be created before the query/subquery EPL above. |
Comment by Thomas Bernhardt [ 28/Mar/11 ] |
Possibly related to view sharing, try disabling view sharing in the configuration? |
Comment by Richard O'Brien [ 28/Mar/11 ] |
Having config.getEngineDefaults().getExpression().setSelfSubselectPreeval(boolean); set to true or false results in the same behavior. Is this the flag to which you're referring? If there is no dummy/first EPL this flag does have an effect... true makes both windows fully populated, false has the subselect missing the most recent event as indicated in the docs at 11.4.18.2 |
Comment by Richard O'Brien [ 28/Mar/11 ] |
Setting view sharing to false achieves the desired behavior. config.getEngineDefaults().getViewResources().setShareViews(false); Does the share view memory optimization affect the logic of EPL statements? |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
change in enhancements420 branch |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-563] Small memory leak creating large number of failed-validation statements Created: 24/Mar/11 Updated: 19/Apr/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a statement compiles syntactically but the statement fails to validate against event types the engine indicates via exception. A very small amount of memory is still retained for the failed statement that should not be retained. This is in the order of 400 bytes to 2k per failed statement. |
Comments |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
for 4.2 release |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-562] On-select with aggregation and group-by not releasing memory after completion of a triggering event Created: 15/Mar/11 Updated: 19/Apr/11 Resolved: 15/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
An on-select statement is found to retain its aggregation state until the next triggering event. An improvement would be to release the aggregation state after an on-select triggered. |
Comments |
Comment by Thomas Bernhardt [ 15/Mar/11 ] |
in bugfix410 branch |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-561] Invoking instance method of an object returned by static method invocation returns cache of static method Created: 03/Mar/11 Updated: 19/Apr/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Major |
Reporter: | Toshihiro Nishimura | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When invoking a static method and then invoking an instance method of the returned object (e.g. SomeClass.staticMethod().instanceMethod()), "evaluate" method of class "com.espertech.esper.epl.expression.ExprStaticMethodEvalInvoke" is called. When "evaluate" method is called at the first time, it calls the static method, caches the returned object to cachedResult, call the instance method, and then return the result. |
Comments |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
change in enhancements420 branch |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-560] Updated (or deleted) event in a Named Window is not delivered to a consuming statement Created: 03/Mar/11 Updated: 19/Apr/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Major |
Reporter: | Toshihiro Nishimura | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Attached programs are tested with JDK 6.0 Update 21 on Windows 7 |
Attachments: | TestCase1.java TestCase2.java |
Number of attachments : | 2 |
Description |
In some situation, updated (or deleted) event in a Named Window is not delivered to its consuming statement (which selects from the Named Window). TestCase2.java doesn't have this issue. |
Comments |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
change in branch enhancements420 |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-559] Output-first With Having-Clause not honoring output interval reliably Created: 16/Feb/11 Updated: 19/Apr/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestOutputFirstHaving.java |
Number of attachments : | 1 |
Description |
This problem is observed for statements that use a having-clause and use "output first". The problem does not apply to statements without having-clause or without "output first". A workaround is to move filter criteria to the where-clause instead. Sample queries affected by the problem: Sample unit test attached. |
Comments |
Comment by Thomas Bernhardt [ 16/Feb/11 ] |
Statements with group-by are also not affected. |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
change in enhancements420 branch |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-558] Incorrect having-clause validation "non-aggregated properties in the 'having' clause must occur in the 'group-by' clause" Created: 16/Feb/11 Updated: 19/Apr/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have some questions about 'having' clause validation... Question 1 Question 2 select host, response_time, prev(1,response_time) from HTTP.std:groupby(host).win:length(10) group by host having response_time > 10 does not satisfy the mentioned restriction and then it yields this error: "Error starting statement: Non-aggregated property 'response_time' in the HAVING clause must occur in the group-by clause [select host, response_time, prev(1,response_time) from HTTP.std:groupby(host).win:length(10) group by host having response_time > 10]" However, if I add an aggregated value to the 'having' clause, then the query is considered as correct. For example, appending 'and avg(response_time) > 0' to the previous query yields a valid query: select host, response_time, prev(1,response_time) from HTTP.std:groupby(host).win:length(10) group by host having response_time > 10 and avg(response_time) > 0 |
Comments |
Comment by Thomas Bernhardt [ 16/Feb/11 ] |
Actually this validation should take place. The having clause is not the right place to filter data since the aggregation values would change depending on whether the filter is considered or not. Compare against MySQL (this query uses the Esper regression test table): mysql> select myint, sum(myint) from mytesttable group by mychar having mybool = 1; This is fine: |
Comment by Thomas Bernhardt [ 16/Feb/11 ] |
In non-aggregated queries however Esper should allow the having-clause to have such filter. |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
bug fix in enhancements420 branch |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-557] On-merge statement creation throws StringIndexOutOfBoundsException when using alias for named window but not for property Created: 15/Feb/11 Updated: 19/Apr/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Richard O'Brien | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
WinXP x64, JRE 1.6.0.23 |
Attachments: | FillEvent.java Main.java PositionEvent.java |
Testcase included: | yes |
Number of attachments : | 3 |
Description |
public class PositionEvent { public final long time; public final int portfolioID; public final int securityID; public final double position; // ... constructors, getters, etc, src attached }When I create a schema based on this class with this statement I get this error when creating an onMerge statement using a window based on that schema. Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1 When I create the schema like this: everything works as expected. Window and merge EPL: String windowEPL = "create window Positions.std:unique(portfolioID,securityID) as PositionData"; String mergeEPL = I am new to Esper, have I misunderstood what types of objects can be used as schema? Sources attached. |
Comments |
Comment by Thomas Bernhardt [ 16/Feb/11 ] |
The exception is caused by the on-merge logic for properties, which allows properties to be prefixed by the named window alias, if provided. Problem EPL: As the named window "Positions" uses alias "p", the property "position" is not prefixed by "p". This causes a bug in the on-merge logic causing the exception to be thrown. Workaround is to either remove the prefix from the named window i.e. "merge Positions where..." or by prefixing the property, i.e. "update set p.position = p.position+..." |
Comment by Richard O'Brien [ 17/Feb/11 ] |
Thank you Thomas. In this case the alias is required to disambiguate portfolioID and securityID fields so I will go with workaround 2. After changing the fields to have the 'p' prefix, I get this error (also only when using the POJO schema): EPL: Just to clarify, why does the on merge EPL syntax need to change when the window's schema is based on a POJO instead of an explicit declaration? |
Comment by Thomas Bernhardt [ 17/Feb/11 ] |
If the Position named window is based on a POJO event class then that class must implement Serializable. A schema is internally represented as a Map so no problem writing to it, but a POJO as an underlying class best adheres to JavaBean and for merging needs to be Serializable. |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
bug fix in bugfix410 branch |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-556] Method-invocation-join when not unidirectional in combination with max/min aggregation function produces warning Created: 04/Feb/11 Updated: 19/Apr/11 Resolved: 04/Feb/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample warning: Sample statement: Wherein "col1" is a field returned by the static method invocation. The warning can be ignored - no change in output expected. |
Comments |
Comment by Thomas Bernhardt [ 04/Feb/11 ] |
in enhancements420 branch |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-555] Improve error message for UDF functions and subscribers that expect primitive typed parameters and receive null Created: 31/Jan/11 Updated: 19/Apr/11 Resolved: 11/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Change the error message and include a warning at statement compile time. The current error reporting is as follow: ions' reported an exception: java.lang.NullPointerException java.lang.NullPointerException at com.dnam.esper.SingleRowFunctions$$FastClassByCGLIB$$96558b13.invoke( <generated>) at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) at com.espertech.esper.epl.expression.ExprStaticMethodEvalInvoke.evaluat e(ExprStaticMethodEvalInvoke.java:73) at com.espertech.esper.epl.core.eval.EvalBase.process(EvalBase.java:47) at com.espertech.esper.epl.core.SelectExprResultProcessor.process(Select |
Comments |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-554] Allow chained method invocation on first() and last() aggregation functions Created: 31/Jan/11 Updated: 19/Apr/11 Resolved: 14/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For example: |
Comments |
Comment by Thomas Bernhardt [ 14/Apr/11 ] |
change in trunk |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-553] Allow first() and last() aggregation functions without parameters Created: 31/Jan/11 Updated: 11/Apr/11 Resolved: 11/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be nice if first() and last() and window() don't have required parameters in the case where a single stream is selected: Example: |
Comments |
Comment by Thomas Bernhardt [ 11/Apr/11 ] |
not consistent with prev, prior function; Also a join would still require parameters so less clear. |
[ESPER-552] NPE logged delivering null-value results to Subscriber update method Created: 27/Jan/11 Updated: 19/Apr/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6, 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Edward Wagner | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
With the following query I started recieving NPE's in the log when the stream was paused. Due to this, the subscriber does not receive empty updates. select fieldName, count as evtCount Timer thread caught unhandled exception: java.lang.NullPointerException |
Comments |
Comment by Edward Wagner [ 27/Jan/11 ] |
Accidently messed up title before submitting. |
Comment by Thomas Bernhardt [ 27/Jan/11 ] |
Please provide the subscriber specifically the update method. |
Comment by Edward Wagner [ 27/Jan/11 ] |
subscriber only has one update method: public void update(Object[][] insertedRows, Object[][] removedRows) {...}Through debugging I have found the problem is that the 'result' object passed into the execute method of ResultDeliveryStrategyObjectArr is null. The NPE is thrown on the first call to 'result.getFirst()'. |
Comment by Thomas Bernhardt [ 31/Jan/11 ] |
Assigned to 4.2 |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
change in enhancements420 branch |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-551] Custom exception handler that rethrows runtime exceptions may cause wrong callback for next event Created: 26/Jan/11 Updated: 19/Apr/11 Resolved: 26/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When an application custom exception handler for runtime exceptions is installed via configuration, and that exception handler re-throws a runtime exception it receives, the rethrown exception may cause the next event to be sent into the engine to perform extraneous processing. |
Comments |
Comment by Thomas Bernhardt [ 26/Jan/11 ] |
Change committed to bugfix410 branch |
Comment by Olivier Girardot [ 26/Jan/11 ] |
thank you |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-550] Where-clause expression validation not taking expression return type into account Created: 26/Jan/11 Updated: 19/Apr/11 Resolved: 26/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When creating an incorrect statement using a view like : Select instrument i get a (relevant) ClassCastException when sending events (and not at compile time): The engine should validate the return type of the "where descriptor.lastExecPrice" expression and display an appropriate exception at compile time. |
Comments |
Comment by Thomas Bernhardt [ 26/Jan/11 ] |
Change committed to bugfix410 branch |
Comment by Olivier Girardot [ 26/Jan/11 ] |
Ok, that would be nice too +1 for the feature |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-549] NullPointerException upon failing to resolve UDF and when configuring a non-default auto-import Created: 26/Jan/11 Updated: 19/Apr/11 Resolved: 26/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | attachments_2011_01_26.zip |
Number of attachments : | 1 |
Description |
Test to reproduce is attached. The problem occurs when an application changes the auto-import list removing the required import, and when a statement such as below is compiled: Quote: |
Comments |
Comment by Thomas Bernhardt [ 26/Jan/11 ] |
Bug fix checked into bugfix410 branch |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-548] ClassCastException prevent children view from being updated Created: 25/Jan/11 Updated: 26/Jan/11 Resolved: 26/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | None |
Type: | Bug | Priority: | Critical |
Reporter: | Olivier Girardot | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When creating an incorrect statement using a view like : Select instrument i get a (relevant) ClassCastException : due to the fact that my where clause is not "appropriate", but it's not why i'm filling this bug. This classCast exception comes from the FilterExprView.filterEvents method but this view is only a child and in this case this view is only updated because it's been registered with the others into the TimeWindowView. My point is that shouldn't views :
especially when they compiles (due, i guess, to the fact that when using views the AST Tree walker lose the types available in the where clause ??) Thank you for your time. |
Comments |
Comment by Thomas Bernhardt [ 26/Jan/11 ] |
Replaced by two independent JIRA: |
[ESPER-547] Support for more granular triggering stream selection for joins (expand 'unidirectional') Created: 25/Jan/11 Updated: 26/Sep/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Petar Dimitrov | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I often need to join multiple data windows in Esper like this: insert into targetWin select ... from In many cases, I would only want to trigger the insert when events arrive in winA or winB, but not in winC. In that case, I would build two separate EPLs: insert into targetWin select ... from insert into targetWin select ... from I would be nice to have a similar keyword which lets you specify more than one event streams which trigger the EPL, for example like this: insert into targetWin select ... from Alternatively (or in addition , there may be a keyword to specifically exclude an event stream from triggering the EPL like this: insert into targetWin select ... from Note that in all cases, it would still be desirable to get the latest value for the join from winC (the way unidirectional currently works). |
Comments |
Comment by Petar Dimitrov [ 25/Jan/11 ] |
Sorry, should have created the issue with a "Minor" priority, but cannot find a way to edit it now |
Comment by Thomas Bernhardt [ 25/Jan/11 ] |
Changed to "minor" priority. |
[ESPER-546] "Last" aggregation function with on-select returns inconsistent results Created: 19/Jan/11 Updated: 19/Jan/11 Resolved: 19/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When used with on-select to query a named window, the "last" aggregation function may return not the last value in the data window but any other value. Sample test: public void testLastMaxMixedOnSelect() { String epl = "on SupportBean(string like 'B%') select last(mw.intPrimitive) as li, max(mw.intPrimitive) as mi from MyWindow mw"; epService.getEPRuntime().sendEvent(new SupportBean("A1", 10)); ); for (int i = 11; i < 20; i++) { ); epService.getEPRuntime().sendEvent(new SupportBean("A1", 1)); ); epService.getEPRuntime().sendEvent(new SupportBean("A1", 2)); ); |
Comments |
Comment by Thomas Bernhardt [ 19/Jan/11 ] |
change in trunk for 4.1 release |
Comment by Mitch [ 19/Jan/11 ] |
also applies to first(), nth etc |
[ESPER-545] startAllStatements() does not re-initialize variables Created: 19/Jan/11 Updated: 31/Mar/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.4, 4.0 - requires JDK6 |
Fix Version/s: | 5.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Variable is created as follows: rules are stopped and restarted after sending a few events using API: the variable FOO keeps its old value instead of being reinitialized. |
Comments |
Comment by Thomas Bernhardt [ 19/Jan/11 ] |
A "stop" operation for a statement means it will receive no more events or time however the statement retains the references to variables and event types. With "destroy" all such references are relieved. If a reference still exists then stopping and starting does not override the current variable value as the variable is still in use. |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
Can use destroy instead, thus closed. |
[ESPER-544] Prefer more specific update method over less specific update method in subscriber Created: 17/Jan/11 Updated: 08/Oct/12 Resolved: 25/Sep/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 4.7 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Assume a subscriber class has two update methods: class TestSubscriber { public void update(String key, OrderEvent orderEvent) public void update(Object[] row) }The first update method is a more specific footprint then the second method. It would be nice if the engine, when a subscriber with multiple suitable update methods is provided, chooses the most specific in terms of parameter types matching the select clause. This is assigned to version 5 as any 4.x version must be consistent in the update-method chosen. |
Comments |
Comment by Thomas Bernhardt [ 25/Sep/12 ] |
Change in enhancements500 branch |
Comment by Thomas Bernhardt [ 08/Oct/12 ] |
in release 4.7.0 |
[ESPER-543] Multiple engine instances same thread sending and receiving problem Created: 14/Jan/11 Updated: 19/Jan/11 Resolved: 14/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Assume two engine instances are initialized. Workaround: use a threading barrier (queue/threadpool) or configure inbound or outbound (or both) threading when sending events between engine instances from the same thread. |
Comments |
Comment by Thomas Bernhardt [ 14/Jan/11 ] |
Change in enhancements410 branch for 4.1 release |
[ESPER-542] The esper-4.0.0.jar in maven central repository can't be installed using maven because it contains the 'production' path. Created: 11/Jan/11 Updated: 19/Jan/11 Resolved: 19/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Tina Vießmann | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
~ apache maven 2.2.1 |
Number of attachments : | 0 |
Description |
The jar used for the maven central repository contains the 'production' path next to the normal path. Therefor the jar can't be installed using maven. (http://mvnrepository.com/artifact/com.espertech/esper/4.0.0) |
Comments |
Comment by Tina Vießmann [ 11/Jan/11 ] |
a extract of the error message is: [ERROR] Error in manifest for mypackage:esper-proj:jar:0.1-SNAPSHOT : Class in different directory than declared. Path from class name is com/espertech/esperio/regression/adapter/TestCSVAdapterUseCasesBean.class but the path in the jar is test/esperio-csv/com/espertech/esperio/regression/adapter/TestCSVAdapterUseCasesBean.class from Jar:lib/esper-4.0.0.jar |
Comment by Thomas Bernhardt [ 19/Jan/11 ] |
Thanks for making us aware. We'll make sure 4.1 does not have this problem. |
[ESPER-541] Esper-4.0.0.jar (Execution fails: no Main-Class attribute in mainifest.mf file) Created: 08/Jan/11 Updated: 06/Sep/11 Resolved: 09/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Critical |
Reporter: | Horst Köhler | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows 7 x64 |
Attachments: | Esper.JPG |
Number of attachments : | 1 |
Description |
I need help. I am not sure if it is the right place of forum to ask for help and whether it is a bug or not. If not, I kindly appologize but please help me to start that jar-file. I have already tried to open the maifest.mf file within the jar and to write something like "Main-Class: classname" to indicate the entry point of the jar application but it didn't work. Probably because I don't actually know where the entry point is and where to set it. Any helpful answer would be appreciated. |
Comments |
Comment by Thomas Bernhardt [ 09/Jan/11 ] |
The Esper CEP engine is an Java component (JAR) that runs in a server of your own environment or within Espertech's Enterprise Edition server. Enterprise Edition is a download from http://www.espertech.com |
Comment by Horst Köhler [ 09/Jan/11 ] |
Dear Mr. Bernhardt, could You provide further information on that issue? Furthermore I thought Esper is a freely available open source application and Espertech's Enterprise Edition server is not freely available. Could You please tell me what to do to run Esper after all or at least the examples I mentioned above? |
Comment by Thomas Bernhardt [ 09/Jan/11 ] |
You do not need Enterprise Edition to run Esper but you can use it to run Esper. |
Comment by Thomas Bernhardt [ 09/Jan/11 ] |
user@esper.codehaus.org is best for questions |
Comment by irvin telepeni [ 06/Sep/11 ] |
Hi, I'm facing the same problem. Has this been solved yet? I am not quite sure how to run both esper and esperee? Apologies if this looks trivial. Many thanks, I |
Comment by Thomas Bernhardt [ 06/Sep/11 ] |
Esper Enterprise Edition has a "running.txt" file in the root folder of the distribution. Esper as downloaded from Codehaus can only be run by running any of the examples that ship with the Esper distribution. |
[ESPER-540] For Event Objects Populated by Insert Into support constructor injection Created: 06/Jan/11 Updated: 19/Apr/11 Resolved: 10/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently only JavaBean style is supported, requiring an empty ctor. The suggestion is to support constructor calls as well. |
Comments |
Comment by Thomas Bernhardt [ 17/Jan/11 ] |
Assigned to 5.0 release as this can potentially change the behavior of existing apps using 4.x |
Comment by Thomas Bernhardt [ 10/Apr/11 ] |
Moved to 4.2 |
Comment by Thomas Bernhardt [ 10/Apr/11 ] |
in 4.2 release |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
[ESPER-539] Support for insert-into to specifiy the fully-qualified class name Created: 06/Jan/11 Updated: 19/Jan/11 Resolved: 16/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For example: The insert-into currently supports a stream name, adding support for a fully-qualified class name could round this up compared to from-clause and on-clause support for fully-qualified class names, and UDF support as well. |
[ESPER-538] Support for auto-event name in insert-into (populate underlying event) Created: 06/Jan/11 Updated: 19/Jan/11 Resolved: 16/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For example: When "MyEvent" is an auto-import (auto-name) event it could be discovered automatically but currently isn't. |
[ESPER-537] NullpointerException in Create-Window with Model-after Syntax when a nested property does not exist Created: 05/Jan/11 Updated: 19/Jan/11 Resolved: 05/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample statement: In the example, when the OuterMap type has an innermap property and that does not have the "abc" field, throws NPE as below. Caused by: java.lang.NullPointerException at at at at at at at at at at at at |
Comments |
Comment by Thomas Bernhardt [ 05/Jan/11 ] |
Bug fix in bugfix400 branch |
[ESPER-536] NPE using Output Limiting clause with an EPStatementObjectModel - ExprTimePeriod Created: 04/Jan/11 Updated: 19/Jan/11 Resolved: 17/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Major |
Reporter: | Olivier Girardot | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Linux - Ubuntu - X86-64 with IntelliJ Idea 10 and JDK 6 |
Number of attachments : | 0 |
Description |
Hi,
The problem was using a statement of this kind (i created one reproducing the bug, with no dependency from my part) : > Select * from pattern[every timer:interval(10 seconds)] output last every 2 seconds But this statement didn't want to compile and a NullPointerException was thrown (and catched internally by Esper). The root cause is from this code : In com.espertech.esper.epl.expression.ExprTimePeriod evaluators is used even if it's null because the "com.espertech.esper.epl.expression.ExprTimePeriod#validate" method was not called. I went back to understand, and here's the conclusion : the com.espertech.esper.epl.spec.StatementSpecMapper#mapExpressionFlat method is taking care of the TimePeriodExpression : and the com.espertech.esper.epl.spec.StatementSpecMapper#mapExpressionRecursive is taking care of the childNodes for the ExprTimePeriod, but afterwards no-one calls the com.espertech.esper.epl.expression.ExprTimePeriod#validate method and therefor "evaluators" is null and the ExprTimePeriod instance is not usable... A simple work around for this is to use the model for what one needs, and then compile the statement using the priorly defined EPL Statement (String) called condition in the following example : EPStatementObjectModel statementObjectModel = administrator.compileEPL(condition); // find if an output stream is created // create the statement : else { statement = administrator.createEPL(condition); }thank you for your time, Regards, Olivier. |
Comments |
Comment by Thomas Bernhardt [ 17/Jan/11 ] |
Change in version 4.1 |
[ESPER-535] "Previous" function when used under single-row plug-in function or user-defined function not compiling in match-recognize Created: 27/Dec/10 Updated: 19/Jan/11 Resolved: 27/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample statement: select * from TemperatureSensorEvent match_recognize ( com.espertech.esper.client.EPStatementException: Error starting statement: |
Comments |
Comment by Thomas Bernhardt [ 27/Dec/10 ] |
In bugfix400 branch |
[ESPER-534] Allow Configuration setting of the two group-by @Hint default values Created: 21/Dec/10 Updated: 03/Dec/13 Resolved: 03/Dec/13 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | Esper wishlist |
Type: | Improvement | Priority: | Minor |
Reporter: | Theo Schlossnagle | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In queries you may specify: @Hint('reclaim_group_aged=60,reclaim_group_freq=30') It would be good to allow those to be set globally to user-specified values via Configuration and still allow the @Hint override. |
[ESPER-533] NullpointerException in Pattern And-state with timer:interval and "not" Created: 14/Dec/10 Updated: 19/Jan/11 Resolved: 14/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.0.0-JIRA533.jar |
Number of attachments : | 1 |
Description |
Sample statement where this infrequently get reported: select |
Comments |
Comment by Thomas Bernhardt [ 14/Dec/10 ] |
We are issuing a cumulative patch for this issue for use with version 4.0. Please add the patch to the classpath before "esper-4.0.0.jar". This is a cumulative patch, remove all other patches for version 4 from classpath, if any. The patch fixes this issue as well as the following issues: |
[ESPER-532] Function coalesce doesn't work with aggregation Created: 09/Dec/10 Updated: 10/Dec/10 Resolved: 09/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Jiri Karpisek (Mycroft Mind) | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hello, SELECT
This statement may return (and really returns) the NULL value for sumDelivery |
Comments |
Comment by Thomas Bernhardt [ 09/Dec/10 ] |
The "sum" aggregation function returns null if there are no values to aggregate, i.e. when events leave a data window. |
Comment by Jiri Karpisek (Mycroft Mind) [ 10/Dec/10 ] |
So is there any chance how to suppress the NULL value when using sum? |
Comment by Thomas Bernhardt [ 10/Dec/10 ] |
coalesc(sum(...), 0) |
[ESPER-531] Avg used as property name for Map properties gets folded to lower-case Created: 02/Dec/10 Updated: 03/Dec/10 Resolved: 02/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Major |
Reporter: | Dan Douglas | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following example code Map<String, Object> props = new HashMap<String, Object>(); EPServiceProvider sp = EPServiceProviderManager.getProvider("BugTest"); EPStatement stmt = sp.getEPAdministrator().createEPL("select Name, Avg from Transactions"); generates this exception com.espertech.esper.client.EPStatementException: Error starting statement: Notice that we're referencing 'Avg' in the query, but 'avg' gets flagged. It's not a trivial issue for us since we're actually creating the event streams from thousands of .csv files that use Avg as a column heading. We'll come up with some work-around for now, but this folding of Avg to avg by the query parser seems to be some sort of bug. It seems to apply to other reserved keywords allowed as property names as well. For example, replacing 'Avg' as 'Min' in the above snippet yields the same result. 'avg' or 'min' used throughout work fine. They are valid property names and at least some part of the system respects case when they are defined. However, it seems that the EPL parsing folds the keywords to lower case, even when they are used as property names. |
Comments |
Comment by Thomas Bernhardt [ 02/Dec/10 ] |
"avg" is a reserved keyword, see doc list for reserved keywords |
Comment by Dan Douglas [ 02/Dec/10 ] |
Thanks for the quick response, but I think you're wrong... or the documentation is. "avg" is a keyword. "Avg" is not. (case-sensitive is default) The doc ALSO states that "avg" is allowed as a property name http://esper.codehaus.org/esper-4.0.0/doc/reference/en/html/appendix_keywords.html (avg has "yes" in the second column of this table indicating that it is allowed as a property name) |
Comment by Dan Douglas [ 02/Dec/10 ] |
Reopenning issue. The example us using "Avg" as a property name, not "avg". Even if "avg" was being used, according to http://esper.codehaus.org/esper-4.0.0/doc/reference/en/html/appendix_keywords.html it is allowed as a property name. |
Comment by Thomas Bernhardt [ 02/Dec/10 ] |
All keywords are case-insensitive. |
Comment by Dan Douglas [ 02/Dec/10 ] |
Are you also saying that keywords CANNOT be used as property names, despite what is documented at http://esper.codehaus.org/esper-4.0.0/doc/reference/en/html/appendix_keywords.html |
Comment by Dan Douglas [ 02/Dec/10 ] |
There seem to be several principles at work here. a) ALL KEYWORDS ARE CASE-INSENSITIVE: So the parser is folding keywords to lower case as they are found. b) CASE-SENSITIVE PROPERTY NAMES IS THE DEFAULT AND ONLY METHOD ALLOWED FOR MAP-BASED EVENTS. The option allowed for POJOs does not seem to apply to map-based events. c) SOME KEYWORDS ARE ALLOWED AS PROPERTY NAMES. However, because of a) and b) above, they cannot be referenced in EPL queries unless that are lowercase. |
Comment by Dan Douglas [ 02/Dec/10 ] |
Just to close this out. I worked around this issue by using a PushbackInputStream to change our .csv file column names on the fly. We changed where we used "Avg" to be "avg" and everything works fine now. |
Comment by Thomas Bernhardt [ 02/Dec/10 ] |
One uses the escape syntax to make it clear what is meant with "avg" |
Comment by Dan Douglas [ 03/Dec/10 ] |
You mean as documented here http://esper.codehaus.org/esper-4.0.0/doc/reference/en/html/epl_clauses.html#epl-syntax-keywords and that reworking the example as Map<String, Object> props = new HashMap<String, Object>(); props.put("Name", String.class); props.put("Avg", double.class); EPServiceProvider sp = EPServiceProviderManager.getProvider("BugTest"); sp.getEPAdministrator().getConfiguration().addEventType("Transactions",props); EPStatement stmt = sp.getEPAdministrator().createEPL( "select Name, `Avg` from Transactions"); would work? That would have been cool, but it doesn't help. I still get this exception com.espertech.esper.client.EPStatementException: Error starting statement: Property named 'avg' is not valid in any stream (did you mean 'Avg'?) [select Name, Avg from Transactions] at com.espertech.esper.core.StatementLifecycleSvcImpl.startInternal (StatementLifecycleSvcImpl.java:579) The problem is not that the use of "Avg" as a property name is being flagged as a keyword. What's happening is that "Avg" is being forced to lower case by the statement parser, even if it is escaped as `Avg`. So, when the statement if validated Esper looks for a property named "avg" and cannot find it, because the property is defined as "Avg". avg as a property name works fine. The restriction is that if you use a keyword for a property name it must be all lower case if you want to be able to reference it in an EPL statement. |
[ESPER-530] Support for loading an XML schema from a string Created: 28/Nov/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently the configuration supports loading a schema from a classpath URL, it would be nice if the schema could be provided as a string |
Comments |
Comment by Thomas Bernhardt [ 05/Dec/10 ] |
Change in branch enhancements410 |
[ESPER-529] create-schema to allow dot characters in property names Created: 28/Nov/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It's probably a minor issue, but I cannot find a way to create an event with a property that has a dot in it, when trying to use "create schema". I can create such an event if I use the old addEventType method like this: HashMap<String,Object> eventConfig = new HashMap<String,Object>(); But any of the following attempts fails: epService.getEPAdministrator().createEPL("create schema Product (product.name string, productsize int)"); I'd like to move to the EPL Modules and the new packaging and deployment features, but I have some legacy events with dots in their properties and cannot seem to find a way around them |
Comments |
Comment by Thomas Bernhardt [ 05/Dec/10 ] |
change is in enhancements410 branch |
[ESPER-528] Unidirectional left outer join between same streams (self join) when used with staggered time-window and grouped view causes out of memory Created: 23/Nov/10 Updated: 19/Jan/11 Resolved: 06/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
import java.util.HashMap; public class EsperTest2 { public void testDuplicates() { String query = "@Hint('reclaim_group_aged=5,reclaim_group_freq=5') " + epService.getEPAdministrator().createEPL(query); for (int i=0; ; i++) { catch (Exception e) {} private void sendProduct(String product, int size) { Map<String, Object> event = new HashMap<String, Object>(); event.put("product", product); event.put("productsize", size); epService.getEPRuntime().sendEvent(event, "Product"); }public static void main(String[] args) throws Exception { (new EsperTest2()).testDuplicates(); } The purpose of the query in green is to eliminate subsequent duplicate events (that is, send an event as soon as it receives it, but if the very same event is received again within the next 3 seconds, ignore it). I am running the above app on a Java 1.6, giving it 128MB of memory. The JVM parameters look like this: -Xms128m -Xmx128m -verbose:gc -XX:+PrintGCTimeStamps The build path in Eclipse looks like this (esper-4.0.0-JIRA520-1.jar appears before esper-4.0.0.jar): The above test case runs for about 1-2 minutes sending about 100,000 events before it uses up the 128MB of memory and eventually dies with an OutOfMemory exception. The output look like this: i=0; Allocated: 123; Free: 102 |
Comments |
Comment by Thomas Bernhardt [ 23/Nov/10 ] |
Can only be reproduced in a unidirectional self-join and with a time window staggered on to of a groupwin. |
Comment by Thomas Bernhardt [ 06/Dec/10 ] |
bug fix in bugfix400 branch |
[ESPER-527] memory leak is possible for unbound/unlimited keys used with every-distinct Created: 19/Nov/10 Updated: 19/Jan/11 Resolved: 06/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Nathan Reese | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
"every-distinct" behaves like "every" and restarts the sub-expression when inner sub-expression turns false. So the cleanup is only inner-sub-expression state and not every-distinct state. A memory leak is possible for unbound/unlimited keys used with every-distinct. The example statement below demonstrates the problem select * from pattern [ Can a language feature be added to specify the length of time that every-distinct keys live? This could either be an annotation or parameter on every-distinct keyword. |
Comments |
Comment by Thomas Bernhardt [ 06/Dec/10 ] |
The changes are in enhancements410 branch. |
Comment by Thomas Bernhardt [ 06/Dec/10 ] |
A simplified example is this statement: |
[ESPER-526] Unidirectional inner join between two named windows when started late (named windows have data) produces too many rows for first result delivery Created: 18/Nov/10 Updated: 19/Jan/11 Resolved: 07/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
To reproduce the problem, the below test should produce 1 row but produces 2 rows. public void testInnerJoinLateStart() { epService.getEPAdministrator().createEPL("create schema Product (product string, size int)"); sendProduct("productA", 1); String stmtText = "@Name(\"Query2\") select portfolio, ProductWin.product, size " + sendPortfolio("Portfolio", "productB"); EventBean result = listenerStmtOne.assertOneGetNewAndReset(); , new Object[] {"Portfolio", "productB", 2}); |
Comments |
Comment by Thomas Bernhardt [ 07/Dec/10 ] |
change in bugfix400 branch |
[ESPER-525] Provide auto-increment column type Created: 17/Nov/10 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
How can I implement an auto increment column in a sliding window or with a create window statement. |
Comments |
Comment by Thomas Bernhardt [ 16/Jan/11 ] |
Assigned for version 5. Awaiting comments for how important this feature is. |
Comment by Thomas Bernhardt [ 21/May/12 ] |
No comments received, can easily be accomplished via any of the UDF or extension |
[ESPER-524] Automatic widening for arithmetic operations that overflow, to be disabled by configuration if desired Created: 13/Nov/10 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
select 100 * 30000000 as foo will result in foo=-1294967296 |
Comments |
Comment by Thomas Bernhardt [ 13/Nov/10 ] |
This would put the result type of all arithmetic operations to double (or BigDecimal if applicable). |
Comment by Thomas Bernhardt [ 13/Nov/10 ] |
Assigned to 5.0 as the change would result in unexpected "double" types as they are currently Java-esqe {int, long, etc} |
Comment by Thomas Bernhardt [ 21/May/12 ] |
Not sensible, all ops would become BigDecimal |
[ESPER-523] Scheduling service SPI to provide nearest time and statement info Created: 11/Nov/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Provide a way for SPI to retrieve the information that statements have currently started a timer and the duration of this timer and nearest time handle. |
Comments |
Comment by Thomas Bernhardt [ 05/Dec/10 ] |
changes in enhancements410 branch |
[ESPER-522] Provide time control event for advancing the system clock by a batch of ticks Created: 11/Nov/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Similar to the existing CurrentTimeEvent, it would be nice if there was a way to advance the system clock by a specified number of ticks without having to send the same number of events. for example: |
Comments |
Comment by Thomas Bernhardt [ 11/Nov/10 ] |
It would be nice if this is very efficient especially if the tick resolution is small (1) |
Comment by Thomas Bernhardt [ 05/Dec/10 ] |
Changes in enhancements410 branch |
[ESPER-521] Insert into stream defined by a schema created as a map schema with property type being an event type not populating when inserted from a map schema stream Created: 09/Nov/10 Updated: 19/Jan/11 Resolved: 09/Nov/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.0.0-JIRA521.jar |
Number of attachments : | 1 |
Description |
For example, consider the following statements: EPStatement stmtOne = epService.getEPAdministrator().createEPL("insert into AllMyEvent " + EPStatement stmtTwo = epService.getEPAdministrator().createEPL("insert into SuspectMyEvent " + The "stmtTwo" result "myEvent" property shows as a null-value instead of carrying the proper event value. |
Comments |
Comment by Thomas Bernhardt [ 09/Nov/10 ] |
We are issuing a cumulative patch for this issue for use with version 4. Please add the patch to the classpath before "esper-4.0.0.jar". This is a cumulative patch, remove all other patches for version 4 from classpath, if any. The patch fixes this issue as well as the following issues: |
[ESPER-520] Possible memory leak using @Hint('reclaim_group_aged=xxx') with time windows Created: 08/Nov/10 Updated: 19/Jan/11 Resolved: 09/Nov/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.0.0-JIRA520-1.jar |
Number of attachments : | 1 |
Description |
Sample EPL: The hint instructs the engine to reclaim time windows that haven't been updated for 5 seconds. The time window schedule however is apparently not cleaned up, since when a larger number of time windows gets created they don't get immediately released on reclaim. Workaround: use keep-all or std:unique window |
Comments |
Comment by Thomas Bernhardt [ 09/Nov/10 ] |
We are issuing a cumulative patch for this issue for use with version 4. Please add the patch to the classpath before "esper-4.0.0.jar". This is a cumulative patch, remove all other patches for version 4 from classpath, if any. The patch fixes this issue as well as the following issues: |
Comment by Thomas Bernhardt [ 13/Nov/10 ] |
We are providing an updated patch to also address intersection and union as well as improve the fix for time windows. |
[ESPER-519] Fire-and-Forget join on 2 named windows with where-clause filtering on one window's rows returns incorrect result Created: 05/Nov/10 Updated: 19/Jan/11 Resolved: 02/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem occurs when a fire-and-forget query is used to join 2 named windows and the where-clause has additional filter criteria that remove rows (other then the filter criteria providing join cardinality). See "value=1" filter below which does not get applied by the query processor. For example: cepAdm.createEPL("create window Win1.win:keepall() (key String, keyJoin String)"); Map event = new HashMap(); event = new HashMap(); cepRT.executeQuery("select w1.key, w2.value from Win1 w1, Win2 w2 where w1.keyJoin = w2.keyJoin and value = 1").getArray(); The expected result should be empty but I'm still getting a record with a value = 5 when the query has the WHERE clause filtering out on the value. |
Comments |
Comment by Thomas Bernhardt [ 06/Nov/10 ] |
Workaround is to use the having-clause as well. |
[ESPER-518] NPE in fire-and-forget query against two named windows with group-by and aggregations when named windows are empty Created: 03/Nov/10 Updated: 19/Jan/11 Resolved: 02/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A join against two named windows with group-by and aggregations executed by a fire-and-forget query generates a NPE when the named window(s) are empty. EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(); java.lang.NullPointerException |
[ESPER-517] Error message "IllegalStateException: Event named ''a' not found in event pattern result set" is inaccurate Created: 03/Nov/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following pattern would not make sense. every (not a=A) -> B) The "IllegalStateException" sounds like an internal error message rather then a pattern semantical error message. |
Comments |
Comment by Thomas Bernhardt [ 05/Dec/10 ] |
Change in enhancements410 branch. Consistent with error reporting for other pattern constructs, this is now a runtime error logged at warning level |
[ESPER-516] Insert into stream defined by a schema created as a map schema with property type being an event type not compiling Created: 28/Oct/10 Updated: 19/Jan/11 Resolved: 02/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.0.0-JIRA516.jar |
Number of attachments : | 1 |
Description |
For example: The last statement "insert into CompositeEvent" fails to allow the insert determining that the inserted event is not compatible. |
Comments |
Comment by Thomas Bernhardt [ 28/Oct/10 ] |
Workaround: don't define the target schema at all or define as a class. |
Comment by Thomas Bernhardt [ 28/Oct/10 ] |
We are making a cumulative patch available as attached. The cumulative patch addresses this issue as well as below issues: |
[ESPER-515] Extend time interval grammar to support weeks, months and years Created: 28/Oct/10 Updated: 19/Jan/11 Resolved: 04/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Could the following please be extended to include weeks, months and years? time-period : [day-part] [hour-part] [minute-part] [seconds-part] [milliseconds-part] That would be awesome since I have to write lots of patterns that span large time intervals. I just had to write one for 730 days where 2 years would have been much more readable. |
Comments |
Comment by Thomas Bernhardt [ 04/Dec/10 ] |
change in enhancements410 branch |
[ESPER-514] Allow XML event type update at runtime via ConfigurationOperations (QIQ-175889) Created: 28/Oct/10 Updated: 19/Jan/11 Resolved: 28/Oct/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.0.0-JIRA514.jar |
Number of attachments : | 1 |
Description |
Currently XML event types cannot be updated at runtime. It would be useful to allow update of a existing type at runtime. |
Comments |
Comment by Thomas Bernhardt [ 28/Oct/10 ] |
A cumulative patch that addresses this improvement item is attached. Please include in the classpath before the esper-4.0.0.jar file. |
Comment by Thomas Bernhardt [ 28/Oct/10 ] |
Patch available. |
[ESPER-513] On-Update set Error starting statement: Property 'u.v2' is not available for write access [on com.espertech.esper.support.bean.SupportBean update MyWindow as u set v1=string, u.v2=string] Created: 28/Oct/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When in an on-update statement any property to set is prefixed by the stream alias of the window to be updated, the statement does not compile. For example: on SupportBean update MyWindow as u set v1=string, u.v2=string ...throws the following exception... Workaround: Don't use a stream prefix for the property to be updated, i.e.: |
Comments |
Comment by Thomas Bernhardt [ 05/Dec/10 ] |
Change available in enhancements410 branch |
[ESPER-512] EventBean getUnderlying method when both subscriber and listener are used returns Class and not the underlying object Created: 27/Oct/10 Updated: 19/Jan/11 Resolved: 28/Oct/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.0.0-JIRA512.jar |
Number of attachments : | 1 |
Description |
When both a listener and subscriber are registered, the received EventBean instance by the listener returns Object[].class instead of the underlying for the "getUnderlying()" call. |
Comments |
Comment by Thomas Bernhardt [ 27/Oct/10 ] |
For example: |
Comment by Thomas Bernhardt [ 27/Oct/10 ] |
Cumulative patch for this issue and below issues: Please add the patch in front of the classpath before esper-4.0.0.jar. Approved for use with EsperHA. |
Comment by Thomas Bernhardt [ 28/Oct/10 ] |
Patch available |
[ESPER-511] Make CurrentTimeEvent and TimerControlEvent Serializable Created: 27/Oct/10 Updated: 19/Jan/11 Resolved: 28/Oct/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-4.0.0-JIRA511.jar |
Number of attachments : | 1 |
Description |
Changing CurrentTimeEvent and TimerControlEvent to implement the Serializable interface allows these events to be sent via adapters. |
Comments |
Comment by Thomas Bernhardt [ 27/Oct/10 ] |
We are issuing a patch in attached file that corrects this issue. Please add to the classpath in front of esper-4.0.0.jar. |
Comment by Thomas Bernhardt [ 28/Oct/10 ] |
Patch available. |
[ESPER-510] Support for event array for event objects populated by insert into Created: 23/Oct/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hello, I would like to ask. I'd like to catch array of end events for given I need (S1, [E1, E2]), (S2, [E3, E4, E5]), ... I have statement: INSERT INTO And JAVA class FinalEvent as: public class FinalEvent { private StartEvent startEvent; private EndEvent[] endEvent; ... }but esper engine call exception: Invalid assignment of column endEvent. I'd like to ask where's problem, or how to solve it in different way. |
Comments |
Comment by Thomas Bernhardt [ 05/Dec/10 ] |
change in enhancements410 branch |
[ESPER-509] Documentation bug in subscriber use: "start" and "end" are "updateStart" and "updateEnd" Created: 21/Oct/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This bug affects the documentation pertaining EPL statement subscribers. They say the names of the two optional functions in the subscriber are 'start' and 'end' when in fact they are 'updateStart' and 'updateEnd' respectively. |
[ESPER-508] Sequence Window advance Created: 20/Oct/10 Updated: 20/Oct/10 Resolved: 20/Oct/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.5 |
Fix Version/s: | None |
Type: | Wish | Priority: | Major |
Reporter: | visalakshmi | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows |
Number of attachments : | 0 |
Description |
In the following query every 60 rows are batched and computed average. Instead of observing the next 60 events, I want to take 30 from the previous window and 30 new arriving events. Is it possible in ESPER ? select avg as meanX from AccelDataEvent.win:length_batch(60) |
Comments |
Comment by Thomas Bernhardt [ 20/Oct/10 ] |
Usage queries are best posted to the user mailing list user@esper.codehaus.org With "insert into RemovedStream select rstream from Event.win:length(30)" you can select the events that are removed. Or you could compute the average for 30 events and insert into a new stream, then use "prev" or "prior" to avg again. Solution patterns also has info on delayed streams. |
Comment by Thomas Bernhardt [ 20/Oct/10 ] |
Can be addressed with existing constructs. |
[ESPER-507] On-Update with subquery against the same named window that is updated produces warning Created: 18/Oct/10 Updated: 05/Dec/10 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following statement can produce the warning: @Name("Incremental Update") Note that the set-clause uses a subselect against the named window currently under update. |
Comments |
Comment by Thomas Bernhardt [ 18/Oct/10 ] |
Use the following statement instead: |
[ESPER-506] NullPointerException on an inner join of named window with aggregation and group-by Created: 15/Oct/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I am experiencing a weird issue I cannot fully understand. Here is a sample scenario I've written down to illustrate the problem: I have two event registered with esper: Event Product: Event Portfolio: I have the following EPLs which essentially create two windows to store data received from the two events above: EPLs: create window PortfolioWin.win:keepall() (portfolio string, product string) Once all of this is set up, I send the follow events to esper (view sendEvent): Runtime events sent to Esper: Product {product=productA; size=2}Portfolio {portfolio=MyPortfolio; product=productA}Here is a simple select that joins the two windows and gives me the size of each product entry (two productA entries, one with size 1 and one with size 2) EPRuntime.executeQuery: select portfolio, size from PortfolioWin inner join ProductWin on PortfolioWin.product=ProductWin.product What I actually want to do is sum the size by portfolio. I want to essentially get a result of portfolio=MyPortfolio and size=3 (sum of 1 and 2). Here is the query I try: EPRuntime.executeQuery: select portfolio, sum(size) from PortfolioWin inner join ProductWin on PortfolioWin.product=ProductWin.product group by portfolio This results in the following error: INFO [EPRuntimeImpl] Error executing statement: null |
[ESPER-505] Reference Documation 4.0.0; Table 6.5; duplicety of operator Created: 14/Oct/10 Updated: 19/Jan/11 Resolved: 03/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Katarína Jobbová (Mycroft Mind) | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In Table 6.5 is duplicity of quantifier ?. It is in row with meaning "Zero or one match (greedy)." and also with "Zero or one match (reluctant).". One should be ??. Due to description below the Table 6.5 it should be in row with meaning "Zero or one match (reluctant).". |
Comments |
Comment by Thomas Bernhardt [ 03/Dec/10 ] |
thanks for the report |
[ESPER-504] Consuming join Created: 05/Oct/10 Updated: 17/Jan/11 Resolved: 17/Jan/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | None |
Type: | New Feature | Priority: | Minor |
Reporter: | Jiri Karpisek (Mycroft Mind) | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | ConsumingJoin.epl |
Number of attachments : | 1 |
Description |
I would like to ask, if it's possible to add feature, which joins the events from 2 different windows and after match it immediately removes/consumes the matched events from the windows, thus they cannot be matched anymore to other events. |
Comments |
Comment by Thomas Bernhardt [ 07/Oct/10 ] |
You could join two named windows and use on-delete to delete from both named windows based on the join results inserted into another stream. |
Comment by Jiri Karpisek (Mycroft Mind) [ 08/Oct/10 ] |
Hello, I've tried it, but it didn't work (maybe I made a mistake). There is a problem, If I had a sequence of events: A1, A2, B1 and I inner joined A and B (in named window), I got pairs (A1,B1) a (A2,B1) and then was B deleted from named window by "on delete". So the join fired 2 events. In general the feature what I appreciate in ESPER is, if I have the sequence (from Reference Documentation): A1 B1 C1 B2 A2 D1 A3 B3 E1 A4 F1 B4 I would like to get pairs (A1,B1), (A2, B3), (A3, B4) |
Comment by Thomas Bernhardt [ 08/Oct/10 ] |
A join should work well, do you want to provide the statements you used? |
Comment by Jiri Karpisek (Mycroft Mind) [ 11/Oct/10 ] |
Hello, 1) window creator - create window |
Comment by Jiri Karpisek (Mycroft Mind) [ 11/Oct/10 ] |
4 statements |
Comment by Thomas Bernhardt [ 15/Oct/10 ] |
You are saying that when you send the sequence "A1, A2, B1" then A stands for WinEvent and B stands for AnotherEvent? |
Comment by Jiri Karpisek (Mycroft Mind) [ 21/Oct/10 ] |
Hello, I will try to prepare it for next week |
Comment by Jiri Karpisek (Mycroft Mind) [ 12/Nov/10 ] |
Hello, I am sorry I haven't time to prepare the jUnit, but it's on my To Do list. I was thinking about could little different use of every (for example everyAll) in a pattern. for instance the reference sequence: everyAll (A -> B) should returns (A1,B1), (A2, B3), (A3, B4) this is very often requirement in our application and now we have to solve it by listeners or by filtering events according to records in DB. |
Comment by Thomas Bernhardt [ 14/Nov/10 ] |
It seems most elegantly be specified via match-recognize: partition by id Can the "id" reoccur? Or should the partition be thrown away when the first pattern matches? |
Comment by Jiri Karpisek (Mycroft Mind) [ 15/Nov/10 ] |
in that case we haven't id, matching is made by given properties (id is used for simplification), so the situation is that id can reoccur. if we have sequence A1, A2, B1, B2 we would get (A1,B1), (A2,B1), but we need (A1,B1), (A2,B2) |
Comment by Thomas Bernhardt [ 15/Nov/10 ] |
It may be helpful to have the complete example if there is no "id" field to understand the complexity of the problem. if an "id" or similar partition can be derived then match-recognize would seem to fit well. |
Comment by Thomas Bernhardt [ 17/Jan/11 ] |
Closed issue for 4.1 version |
[ESPER-503] Incorrect warning logged using @Hint('reclaim_group_aged=2') with std:groupwin grouped data windows Created: 01/Oct/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
According to the documentation, values are given in seconds. So the following hint would reclaim groups with no updates over 2 seconds (checking every 30 seconds): But when I compile, I get the following warning when I register the EPL: |
Comments |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
The bug is in the parameter checking. The warning can be ignored. The parameter is indeed a number of seconds. |
Comment by Thomas Bernhardt [ 05/Dec/10 ] |
change in bugfix400 branch |
[ESPER-502] NullPointerException in OutputProcessViewDistinctOrAfter.process() and update() methods Created: 30/Sep/10 Updated: 19/Jan/11 Resolved: 05/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Michal Oskera (Mycroft Mind) | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
CentOS release 5.5 (Final) x86_64, JDK: 1.6_21 |
Number of attachments : | 0 |
Description |
We've got an NullPointerException in com.espertech.esper.epl.view.OutputProcessViewDistinctOrAfter.process() method at line 134 under very specific circumstances, which are hard to be reproduced in JUnit test. However, after code inspection there is an obvious reason for that. The call of processJoinResult() may return null value (assigned into newOldEvents), which is not checked before used when respective SELECT statement contains DISTINCT keyword (see line 132). This may also happen in update() method of the same class, where condition at line 96 suggests that newOldEvents variable may be of null value. |
[ESPER-501] (.NET) View sharing introduce a missed event for NEsper 3.3 Created: 17/Sep/10 Updated: 10/Apr/11 Resolved: 10/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.4 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'm currently working on an alert framework that monitors evolution of certain variables over time. Basically, I compare the value of a frame (a certain amount of events) to the frame before an throw an alert if it increases or decreases too much. Here's an example of what I do to monitor the growth of a value over 1% => select (select avg(MonitoredValue) as avgNextValue from myEvent(((FirstCriterion = 13281)) and ((SecondCriterion = null))).win:length(10)), It works very well, my only issue is that if I add two (or more) of those statements to my engine, only one statement works well, the others seem to "miss" some events. ============= I just realized that I was using Nesper 3.3 which was replaced by 3.4... The easiest way to repro would be to copy paste the EPL I sent in two different statements and send two events like this => myEvent { FirstCriterion = 13281, SecondCriterion = null, MonitoredValue = 14 }Try it first with one statement, then with both, it will only trigger one in the second case. Regards, |
Comments |
Comment by Thomas Bernhardt [ 10/Apr/11 ] |
Duplicate at http://jira.codehaus.org/browse/ESPER-564 |
[ESPER-500] Provide event record and replay Created: 10/Sep/10 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 21/May/12 ] |
Not part of core CEP funtionality |
[ESPER-499] Enhance Create-Schema syntax to allow for Model-After Created: 10/Sep/10 Updated: 01/Nov/11 Resolved: 01/Nov/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.4 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For named windows the EPL allows this as called model-after syntax: 1 create window aWindow.win:xxx as select * from eventType; For "create schema" the syntax does not allow model-after currently. It would be nice to support: 1 create schema aNewEventType as select * from eventType; |
Comments |
Comment by Thomas Bernhardt [ 10/Sep/10 ] |
Actually (2) already allocates an implicit event type as it inserts into a new stream therefore (1) is not useful here unless the purpose is to define the stream in advance. |
Comment by Thomas Bernhardt [ 01/Nov/11 ] |
part of 4.4 release |
[ESPER-498] Listener triggered twice when using time_batch and group by Created: 08/Sep/10 Updated: 01/Oct/10 Resolved: 09/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | leo | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP |
Number of attachments : | 0 |
Description |
select symbol from TestEvent.win:time_batch(5 sec) group by symbol Event though there is only one event arrived, the listener triggered twice within 10 seconds. |
Comments |
Comment by Thomas Bernhardt [ 09/Sep/10 ] |
Please post to dev@esper.codehaus.org or user@esper.codehaus.org for discussion. In the fully-aggregated case the remove stream posts the symbols removed from the batch. If selecting aggregation values you'd see the value go back to null. |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-497] IllegalStateException for statement with "prior" against a time window with univariate stats view Created: 08/Sep/10 Updated: 01/Oct/10 Resolved: 26/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.5.0-JIRA497.jar |
Number of attachments : | 1 |
Description |
Statement: SELECT * FROM SupportBean.win:time(5 minutes).stat:uni(intPrimitive) where prior(1, average) > 0 Exception received on first event: 2010-09-08_20:30:10.25803 Caused by: java.lang.IllegalStateException: Event not currently in collection, event=MapEventBean eventType=MapEventType typeName=cb5180a8-bb53-48c6-a3f2-1761c78c05b1 propertyNames=[stddevpa, total, datapoints, variance, stddev, average] |
Comments |
Comment by Thomas Bernhardt [ 08/Sep/10 ] |
We attach a cumulative patch for this issue, please prepend to classpath and remove any other patches, for use with version 3.5.0. Cumulative: |
Comment by Thomas Bernhardt [ 26/Sep/10 ] |
Fix also in release 4.0 |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-496] On-select with stream wildcard and aggregation produces event-per-group and not event-per-row Created: 07/Sep/10 Updated: 26/Sep/10 Resolved: 07/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample queries: create window MyWindow.win:keepall() as (a string, b int) // This produces an event-per-group (one event), should produce multiple if multiple events contribute to total of 20 Workaround: on MyWindow select mwc.b, mwc.* from MyWindow mwc group by a having sum(b) = 20 |
[ESPER-495] Support XPath attribute node list result casted to string array Created: 05/Sep/10 Updated: 26/Sep/10 Resolved: 06/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample event: <Event IsTriggering="True"> I need to have a statement that matches the value of a field named "A" (which can be both under "Event" and under "Participant". desc.addXPathProperty("A", "//Field[@Name='A']/@Value", XPathConstants.NODESET, "String[]"); However, the casting to "String[]" always returns an array with the correct number of elements (for 2 "A"s), but all elements in array are null. Do I need to configure anything else? Without casting to String[], how do I use the property inside a statement? For example, "select * from Event(A=....)? ========================== My XPath is an ATTRIBUTE_NODE so it just ignored the node's value. It can be seen in the XpathPropertyGetter.castToArray method in the source code. |
Comments |
Comment by Thomas Bernhardt [ 06/Sep/10 ] |
in 4 branch, for release 4.0 |
[ESPER-494] Make @Hint("reclaim_group_aged=...") apply to grouped data windows as well Created: 05/Sep/10 Updated: 26/Sep/10 Resolved: 26/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be practical if the @Hint("reclaim_group_aged=age_in_seconds") that applies to group-by state also applies when using grouped data windows via "std:groupby" |
Comments |
Comment by Thomas Bernhardt [ 26/Sep/10 ] |
in release 4.0 |
[ESPER-493] "IllegalStateException" for an aggregation query without group-by and without aggregations in the select clause Created: 31/Aug/10 Updated: 26/Sep/10 Resolved: 01/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following query throws an exception starting: select * The exception: java.lang.IllegalStateException: Unexpected empty group-by expression list |
Comments |
Comment by Thomas Bernhardt [ 31/Aug/10 ] |
Workaround: create query by including an aggregation function in the select clause, for example; select string, count |
Comment by Thomas Bernhardt [ 31/Aug/10 ] |
Scheduled for release 4.0 |
Comment by Thomas Bernhardt [ 01/Sep/10 ] |
fix part of 4.0 release |
[ESPER-492] passing a property with null value to a univariate statistics view Created: 20/Aug/10 Updated: 26/Sep/10 Resolved: 23/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Test | Priority: | Minor |
Reporter: | Ronald Kaiser | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | diff TestEsperNullProperty.java UnivariateStatisticsView.java |
Testcase included: | yes |
Number of attachments : | 3 |
Description |
As described in http://esper.codehaus.org/esper-3.5.0/doc/reference/en/html/configuration.html , I defined an event-type in a configuration file as follows : And then, running the test attached, I could get the test throwing a java.lang.NullPointerException. In order to suit in our software, we would like to make this view (and others) ignore such events badformed – and continue with the calculations of mean, stdeviation, etc, discarting the events with bad formed properties. Thank you in advance. |
Comments |
Comment by Ronald Kaiser [ 20/Aug/10 ] |
Attached our UnivariateStatisticsView.java and a diff in order to solve the 'bug'. |
Comment by Thomas Bernhardt [ 07/Sep/10 ] |
Assigned to 4.0 release, downgraded to minor as one could use coalesce |
[ESPER-491] ConcurrentModificationException with "prioritized" engine setting for multiple subselects against the same named window Created: 13/Aug/10 Updated: 01/Oct/10 Resolved: 13/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem occurs when the "prioritized" setting is true and a statement consumes multiple streams from a named window by using multiple subselects, and under threading (i.e. timer and/or app threads) java.util.ConcurrentModificationException |
Comments |
Comment by Thomas Bernhardt [ 13/Aug/10 ] |
change in bugfix350 branch |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-490] Package test support classes in com.espertech.esper.support.util for Unit/Regression testing support Created: 05/Aug/10 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.5 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The resulting jar file would be esper-testsupport-<version>.jar. Work:
|
Comments |
Comment by Thomas Bernhardt [ 23/Sep/10 ] |
Since the assertion classes have a dependency on JUnit, an separate jar would be required or the dependency on Junit would need to be removed. |
Comment by Thomas Bernhardt [ 21/May/12 ] |
Exists since 4.5 |
[ESPER-489] Plug-in loader destroy order should be reverse of creation order Created: 01/Aug/10 Updated: 26/Sep/10 Resolved: 02/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently (3.5) plug-in's are destroyed in the same order they are created. If there is a dependency between plugin's, a reverse destroy order is more suitable. |
[ESPER-488] Create "prevtail" function similar to "prev" but indexing back from the tail, similar to prev(count(*) - 2, field) Created: 30/Jul/10 Updated: 26/Sep/10 Resolved: 01/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
assigned to 4.0 release |
Comments |
Comment by Thomas Bernhardt [ 01/Sep/10 ] |
In 4.0 we add the "prevtail" function and the "prevcount" and the "prevwindow" function. |
[ESPER-487] Custom aggregation functions - pass indicator whether running windowed and allow access to child expressions Created: 30/Jul/10 Updated: 26/Sep/10 Resolved: 07/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Custom aggregation functions can have now just a single implementation So, please, give some means to custom aggregation functions to expose two implementations. For example, this can be done by .. |
Comments |
Comment by Thomas Bernhardt [ 03/Aug/10 ] |
> >> Please, give some reasonable means to choose return type of aggregate function. Yes, but the question is how a particular instance of aggregation function object Example: predefined MinMaxAggregator obtains its return type via constructor. It's May be, in the context of issue 487 you've filled in, it will be helpful to create
AST nodes will help to choose return type and determine whether the argument is constant. |
Comment by Thomas Bernhardt [ 03/Aug/10 ] |
We can provide access to the expression nodes of the child expression(s). |
Comment by Thomas Bernhardt [ 07/Sep/10 ] |
Patch applied to 4.0 branch for release |
[ESPER-486] Initialization of service provider after creation of runtime and admin objects breaks multi-threading Created: 28/Jul/10 Updated: 01/Oct/10 Resolved: 04/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Alexander Monakhov | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperMain2.java |
Number of attachments : | 1 |
Description |
The following test case never stops if inbound threading is configured. The code starts a bunch of threads each sending the same amount of events with random pauses between each event sending. Currently, it starts 2 thread, each sends 3 events. Inbound threading is turned on and inbound capacity is set to 4. When run, the code gets stuck in ArrayBlockingQueue, because no processing thread takes a unit of work to execute. Variations:
The code is: import java.util.Collections; import com.espertech.esper.client.Configuration; public class EsperMain2 { private static class EventSender implements Runnable { public void run() { stop.countDown(); } public static void sendE(String val, EPRuntime esper_runtime) { esper_runtime.sendEvent(new CurrentTimeEvent(System.currentTimeMillis())); esper_runtime .sendEvent(Collections.<String, Object>singletonMap("val", val), "E"); }} private static class DumpListener implements UpdateListener { public void update(EventBean[] newEvents, EventBean[] oldEvents) { if (newEvents == null || newEvents.length == 0) return; String res = "In update: thread = " + Thread.currentThread().getName() + ", " + " event = " + newEvents[0].get("val"); System.out.println(res); System.out.flush(); }} public static void main(String[] args) throws Throwable { Configuration config = new Configuration(); Threading threading = config.getEngineDefaults().getThreading(); threading.setThreadPoolInbound(true); threading.setThreadPoolInboundCapacity(4 /* !!! */); // array blocking queue will be of size 4 config.addEventType ("E", Collections.<String, Object>singletonMap("val", String.class)); EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(config); EPAdministrator admin = engine.getEPAdministrator(); EPRuntime esper_runtime = engine.getEPRuntime(); engine.initialize(); /* !!! */ admin.createEPL("select * from E").addListener(new DumpListener()); int num_senders = 2 /* !!! */; CyclicBarrier start = new CyclicBarrier(num_senders + 1); CountDownLatch stop = new CountDownLatch(num_senders); EventSender es = new EventSender(3 /* !!! */, esper_runtime, start, stop); // 6 events sent. 6 > 4 a thus the test will sit on monitors for (int i = 1; i <= num_senders; i ++) new Thread(es, "Sender " + i).start(); start.await(); stop.await(); }} |
Comments |
Comment by Alexander Monakhov [ 28/Jul/10 ] |
I attached the code sample as Jira broke formatting in initial post. |
Comment by Thomas Bernhardt [ 04/Aug/10 ] |
After "initialize" the administrative and runtime (EPAdministrator and EPRuntime) obtained before the initialze become invalid and should no longer be used. |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-485] Support for contained-event syntax on events selected from a named window Created: 21/Jul/10 Updated: 26/Sep/10 Resolved: 03/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Workaround: insert from named window into another stream, i.e. insert into AnotherStream select * from NamedWindow |
Comments |
Comment by Thomas Bernhardt [ 03/Aug/10 ] |
in branch enhancements400 |
[ESPER-484] "In" operator in pattern filter against event property of type "Set" not matching Created: 19/Jul/10 Updated: 01/Oct/10 Resolved: 04/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.5 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
To reproduce: package arms.esper; import java.util.Collections; import com.espertech.esper.client.ConfigurationOperations; public class EsperMain { public static boolean contains(Set<?> set, Object obj) { return set.contains(obj); } public static void main(String[] args) { EPAdministrator admin = engine.getEPAdministrator(); config.addImport(EsperMain.class); Map<String, Object> start_load_type = new HashMap<String, Object>(); Map<String, Object> single_load_type = new HashMap<String, Object>(); admin.createEPL( public void update(EventBean[] new_events, EventBean[] old_events) { if (new_events == null && new_events.length == 0) return; EventBean eb = new_events[0]; System.out.println("Pattern matched!"); }}); EPRuntime runtime = engine.getEPRuntime(); runtime.sendEvent(Collections.singletonMap("versions", versions), "StartLoad"); |
Comments |
Comment by Thomas Bernhardt [ 19/Jul/10 ] |
Workaround is to create a function as the sample above also does. |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-483] NPE with "prev" in having-clause and count(*) Created: 19/Jul/10 Updated: 04/Aug/10 Resolved: 04/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 3.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
select prev(count - 1, value) but it throws this exeception: Exception in thread "main" java.lang.NullPointerException |
[ESPER-482] Insert-into to named window that declares a single column with the type being an event-type not allowed Created: 14/Jul/10 Updated: 01/Oct/10 Resolved: 14/Jul/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 3.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.5.0-JIRA482.jar |
Number of attachments : | 1 |
Description |
To reproduce: ...incorrectly generates an error message that indicates that a String property is being populated from an event. |
Comments |
Comment by Thomas Bernhardt [ 14/Jul/10 ] |
We attach a cumulative patch for this issue, please prepend to classpath and remove any other patches, for use with version 3.5.0. Cumulative: |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-481] Create-Window with explicit column-types does not support column types that are an event type (documentation bug/improvement) Created: 14/Jul/10 Updated: 26/Sep/10 Resolved: 03/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
for example, the following is not supported in version 3.5: create schema MySchema (col1 int, col2 int) create window MyWindow as (col3 MySchema) |
Comments |
Comment by Thomas Bernhardt [ 14/Jul/10 ] |
The documentation links are The documentation links to variable column types but does not state that column types that are event types are not supported. |
Comment by Thomas Bernhardt [ 14/Jul/10 ] |
Workaround is to create a separate schema and use model-after syntax for creating the named window. |
Comment by Thomas Bernhardt [ 03/Aug/10 ] |
in branch enhancements400 |
[ESPER-480] Create window table syntax does not regard [] array brackets for types Created: 07/Jul/10 Updated: 01/Oct/10 Resolved: 07/Jul/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.5.0-JIRA480.jar |
Number of attachments : | 1 |
Description |
For example, the following EPL... |
Comments |
Comment by Thomas Bernhardt [ 07/Jul/10 ] |
We attach a cumulative patch for this issue, please prepend to classpath and remove any other patches, for use with version 3.5.0. Cumulative: |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-479] Support expression in [a..b] bound repeat in patterns Created: 07/Jul/10 Updated: 26/Sep/10 Resolved: 05/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 5.0 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently, Esper allows to use only constant values in repeat bounds This feature, of course, will require some standard range correctness checks A simple example follows. There are 'StartLoad' events that indicate starting loading EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(); EPAdministrator admin = engine.getEPAdministrator(); Map<String, Object> start_load_type = new HashMap<String, Object>(); Map<String, Object> single_load_type = new HashMap<String, Object>(); Map<String, Object> end_load_type = new HashMap<String, Object>(); admin.createEPL( Now Esper rejects to compile the statement above, saying: Exception in thread "main" com.espertech.esper.client.EPStatementSyntaxException: Incorrect syntax near 'start_load' at line 5 column 14, please check the pattern expression within the pattern expression within the from clause [select * from |
Comments |
Comment by Thomas Bernhardt [ 04/Aug/10 ] |
assigned to 4.0 release |
Comment by Thomas Bernhardt [ 05/Aug/10 ] |
changes in enhancement400 branch |
[ESPER-478] On-update when updating a named window with intersection data windows logs error Created: 06/Jul/10 Updated: 01/Oct/10 Resolved: 30/Jul/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Error logged: To reproduce: |
Comments |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-477] Make semantics of 'output first' from grouped selects analogous to the one of 'output last' Created: 02/Jul/10 Updated: 26/Sep/10 Resolved: 07/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core, Documentation |
Affects Version/s: | 5.0 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexander Monakhov | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Suppose there's a stream of events 'E' each having string attribute 'val'. select * from E.win:time(1 hour) But what if obtaining the first events is required? > The last keyword specifies that only groups whose aggregate values .. with the only difference that for each group which value had changed, the output row must correspond to the first event from that group appeared during the specified period rather than to the last such event. The issue is about adding the semantics above to 'output first' clause. |
Comments |
Comment by Thomas Bernhardt [ 07/Aug/10 ] |
In enhancements400 branch |
[ESPER-476] Preconfigured event type removed when module undeployed Created: 02/Jul/10 Updated: 01/Oct/10 Resolved: 07/Jul/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.5.0-JIRA476.jar |
Number of attachments : | 1 |
Description |
Assume a type was configured using the config API or XML or runtime API, e.g. ...then a module is deployed, e.g.: ...then the module gets undeployed, e.g: The preconfigured type is no longer available after undeployment. A workaround is to create a single statement outside of the module that references the type. |
Comments |
Comment by Thomas Bernhardt [ 02/Jul/10 ] |
We attach a cumulative patch for this issue, please prepend to classpath and remove any other patches, for use with version 3.5.0. Cumulative: |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-475] NPE in configuration while loading auto-import xml tag without import-name attribute Created: 02/Jul/10 Updated: 01/Oct/10 Resolved: 04/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.5 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Trivial |
Reporter: | Alexander Monakhov | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A typo in config file: <auto-import import-nmae="java.lang.Integer"/> Results in NPE: java.lang.NullPointerException May be some message must be provided in case of error in config file, for example message from validating XML parser. |
Comments |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-474] POJO inheritance for named window insert only considering first-level inheritance Created: 30/Jun/10 Updated: 01/Oct/10 Resolved: 30/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.5 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.5.0-JIRA474.jar |
Number of attachments : | 1 |
Description |
class A create window ABCWin as A // This fails: |
Comments |
Comment by Thomas Bernhardt [ 30/Jun/10 ] |
Please find the patch jar attached for use with release 3.5.0. Prepend the patch to classpath. |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Fixed in 4.0 release |
[ESPER-473] Custom marshaller for Spring JMS adapter that returns DOM object results in an unrecognized event Created: 16/Jun/10 Updated: 18/Jun/10 Resolved: 16/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.4 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Workaround: |
[ESPER-472] ClassCastException while sending TimeControlEvent into isolated runtime Created: 15/Jun/10 Updated: 18/Jun/10 Resolved: 16/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.4 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Alexander Monakhov | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When initializing isolated runtime with the following code epRuntimeIsolated.sendEvent(new TimerControlEvent(ClockType.CLOCK_EXTERNAL)); I get an exception: java.lang.ClassCastException: com.espertech.esper.client.time.TimerControlEvent |
[ESPER-471] Static method called 'join' (reserved keyword) not allowed Created: 11/Jun/10 Updated: 26/Sep/10 Resolved: 03/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.4 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Alexander Monakhov | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Consider the following statement GenericEvent is a placeholder for parser input data and has But while creating the pattern I get: com.espertech.esper.client.EPStatementSyntaxException: Incorrect syntax near 'join' (a reserved keyword) at line 2 column 17, please check the select clause [ I tried to escape `join` method name. But the result is almost the same: com.espertech.esper.client.EPStatementSyntaxException: Incorrect syntax near '(' at line 2 column 23, please check the select clause [ select LineUtils.`join`(content, ' ') from GenericEvent ] Seems that EPL should allow using its keywords as Java identifiers at least when they are escaped with ``. |
Comments |
Comment by Thomas Bernhardt [ 13/Jun/10 ] |
This is assigned to 4.0 to coincide with the ANLTR upgrade in the next major release. |
Comment by Thomas Bernhardt [ 03/Aug/10 ] |
in branch enhancements400 |
[ESPER-470] Spring JMS input adapter ack's message before unmarshal Created: 10/Jun/10 Updated: 18/Jun/10 Resolved: 16/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.4 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'm trying to use the SpringJMSTemplateInputAdapter and I've noticed when I <!-- Spring Application Context --> <!-- JMS ActiveMQ Connection Factory --> <!-- ActiveMQ destination to use by default --> <!-- Spring JMS Template for ActiveMQ --> <!-- Provides listener threads --> <!-- Default unmarshaller --> <!-- Input adapter --> |
[ESPER-469] Using java.sql.Date with renderer returns PropertyAccessException Created: 10/Jun/10 Updated: 18/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Example: EPStatement statement = epService.getEPAdministrator().createEPL("select java.sql.Date.valueOf(\"2010-01-31\") as mySqlDate from SupportBean"); EventBean event = statement.iterator().next(); String result = epService.getEPRuntime().getEventRenderer().renderXML("testsqldate", event); com.espertech.esper.client.PropertyAccessException: java.lang.reflect.InvocationTargetException |
[ESPER-468] IllegalArgumentException while parsing "B until not B" pattern Created: 09/Jun/10 Updated: 18/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.4 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Alexander Monakhov | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Creation of EPL statement "select * from pattern [ B until not B ]" results in the following: java.lang.IllegalArgumentException: Filter callback to be removed not found |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Assigned for 3.5 release |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
in release 3.5 |
[ESPER-467] Position markers on parse tree are incorrect Created: 26/May/10 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Trivial |
Reporter: | W Jones | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
MacOS X 10.5.8, Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-9M3125) |
Attachments: | TestFileLocations.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
The AST produced by the EPL parser does not produce correct location markers. Both line numbers and column numbers are incorrect. See attached test. |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Assigned to 3.5 release |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Token char positions are not designed to be used for client API, use version 3.5 module instead |
[ESPER-466] First-length and first-unique combined to intersection (multiple data windows) to reduce insert stream Created: 10/May/10 Updated: 26/Sep/10 Resolved: 03/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 5.0 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
As documented in This is slightly inconsistent for the following statement: |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Assigned to 4.0 release |
Comment by Thomas Bernhardt [ 03/Sep/10 ] |
Bug fix in release 4 |
[ESPER-465] Support for XSD Schema events based on plain Apache Xerces and not Sun redistribution Created: 08/May/10 Updated: 02/Sep/10 Resolved: 02/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Esper uses the implementation returned by "DOMImplementationRegistry.newInstance().getDOMImplementation("XS-Loader");" for the current thread but only supports the Sun Xerces redistribution. [java] Exception in thread "main" com.espertech.esper.client.ConfigurationException: Failed to read schema 'watchme.xsd' : org.apache.xerces.impl.xs.XSImplementationImpl cannot be cast to com.sun.org.apache.xerces.internal.xs.XSImplementation |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Assigned to 4.0 release which will require JDK 6 |
Comment by Thomas Bernhardt [ 02/Sep/10 ] |
Version 4 will present a nice error message, documents the limitation and provides the workaround as herein. // Set JRE DOM registry before loading the configuration |
[ESPER-464] Add an engine-level configuration parameter for default AccessorStyle Created: 17/Apr/10 Updated: 18/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.5 |
Fix Version/s: | 3.5 |
Type: | New Feature | Priority: | Trivial |
Reporter: | Barry Kaplan | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Not all JVM languages use javabean conventions, Scala for example. Hence it would helpful to have an engine-level configuration that allows setting AccessorStyle.PUBLIC as the default for all even types. (see also http://old.nabble.com/Using-AccessorStyle.PUBLIC-for--all--events--td28277633.html) |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Assigned to 3.5 release |
[ESPER-463] Nested properties can not be escaped with ticks Created: 05/Apr/10 Updated: 18/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.4 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.4.0-JIRA463.jar |
Number of attachments : | 1 |
Description |
This JIRA is the same as the .NET JIRA-390. When a nested property matches the name of a reserved keyword, the escape syntax must be used to escape the property: |
Comments |
Comment by Thomas Bernhardt [ 05/Apr/10 ] |
The cumulative jar patch file attached also addresses the following JIRAs: http://jira.codehaus.org/browse/ESPER-460 Added ResultSet to context provided to SQLOutputRowConversion and SQLColumnTypeConversion |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Part of 3.5 release |
[ESPER-462] Add data window that retains the last event per key and merges all fields Created: 31/Mar/10 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be useful to have a data window that retains the last event per key (or combination thereof) and where all newly arriving events of the same key get merged or updated into the most current event. This is a special case of revision event types where there is only a single event type and all fields are merged. Synopsis: Example:
Can currently be accomplished by revision event types but requires configuration. |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
assigned to 4.0 release |
Comment by Thomas Bernhardt [ 21/May/12 ] |
see revision event types, or on-merge with named window |
[ESPER-461] LIMIT and ORDER BY do not work for patterns Created: 29/Mar/10 Updated: 31/Mar/10 Resolved: 31/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | PatternBug.java |
Number of attachments : | 1 |
Description |
When a pattern runs multiple rows for a match, it is not possible to order or limit the number of rows returned to the listener. Test code attached. eg: select e1.eventID as id1, e2.eventID as id2 from Sample input: sample output rows: map= {id1=1, id2=3}map= {id1=2, id2=3}expected only: rows=1 map={id1=2, id2=3} This problem does not appear to affect match_recognize. |
Comments |
Comment by Thomas Bernhardt [ 31/Mar/10 ] |
Cannot be reproduced in version 3.4 |
[ESPER-460] Added ResultSet to context provided to SQLOutputRowConversion and SQLColumnTypeConversion Created: 27/Mar/10 Updated: 18/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.4 |
Fix Version/s: | 3.5 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.4.0-JIRA460.jar |
Number of attachments : | 1 |
Description |
It would be very practical to also have the ResultSet in the context objects provided when column or row mapping an SQL result, for custom column retrieval logic if needed. |
Comments |
Comment by Thomas Bernhardt [ 27/Mar/10 ] |
The cumulative patch file attached addresses this issue as well as below. Please add in front of the Esper jar file in your classpath.
|
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
In version 3.5 release |
[ESPER-459] Query rewrite causes miss of event when using in-keyword with set/map/array parameter in simple filter-only query Created: 25/Mar/10 Updated: 18/Jun/10 Resolved: 25/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.4 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Consider the following class, I expect both listeners to write a message, but only the second one writes the message. package org.test; import java.util.HashSet; import com.espertech.esper.client.Configuration; public class Event private Type type; public Event( Type type ) { this.type = type; }public Type getType() { return type; } public static void main( String[] args ) Set<Type> types = new HashSet<Type>(); // set the "in " query EPStatement inStmt = epService.getEPAdministrator().create( inPstmt ); }); // set the "= any" query EPStatement anyStmt = epService.getEPAdministrator().create( anyPstmt ); }); Event eventA = new Event( Type.A ); epService.getEPRuntime().sendEvent( eventA ); |
Comments |
Comment by Thomas Bernhardt [ 25/Mar/10 ] |
The problem manifests itself in "select * from ABC where condition" simple queries only that are rewritten by the engine. When condition contains "in (var)" and 'var' is a array, map or collection then the condition does not evaluate correctly. |
Comment by Thomas Bernhardt [ 25/Mar/10 ] |
Changes in branch bugfix340 |
Comment by Thomas Bernhardt [ 27/Mar/10 ] |
Please find a patch generated for this JIRA in post http://jira.codehaus.org/browse/ESPER-460 |
[ESPER-458] Have TypeWidenerBoxedNumeric support java.lang.Character Created: 15/Mar/10 Updated: 03/Aug/10 Resolved: 03/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Getting the ASCII or Unicode value of a character is simple in Java. The char type is already an integer type, so you can simply use it in most places that you would use an int. To print it out as an integer (since characters are usually printed out as the character and not the integer value), simply cast it into an int. From http://www.codecodex.com/wiki/Find_the_ASCII_or_Unicode_value_of_a_character |
Comments |
Comment by Thomas Bernhardt [ 15/Mar/10 ] |
The idea is to allow assigning an int-values to a Character/char, for properties or variables that are char-type. Is there more or did is this summmary correct? |
Comment by Mathias Bogaert [ 15/Mar/10 ] |
Actually the opposite. Accept a Character/char for properties or variables that are numeric-type. |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
Is there a good EPL statement use case for this? |
Comment by Thomas Bernhardt [ 03/Aug/10 ] |
Most relational systems don't allow assigning int-types a character without explicit convert, while most programming languages seem to allow. To prevent mistakes lets not allow. |
[ESPER-457] ClassCastException when using subscriber to join statement with wildcard-select and distinct Created: 12/Mar/10 Updated: 19/Mar/10 Resolved: 15/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample statement and code to reproduce: String epl = "select distinct * from " + EPStatement stmt = epService.getEPAdministrator().createEPL(epl); log.info("Sending event (fooA) starting pattern subexpression..."); log.info("Sending event (wooA 1) matching pattern subexpression..."); log.info("Sending event (wooA 2) matching pattern subexpression..."); log.info("Sending event (fooB) causing join with matched patterns..."); assertTrue(subscriber.isInvoked()); com.espertech.esper.client.EPException: java.lang.ClassCastException: java.lang.Class |
Comments |
Comment by Thomas Bernhardt [ 12/Mar/10 ] |
As a possible workaround one could use a listener to receive events, as the problem is specific to the use of a subscriber object. |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-456] Hi , I am getting below exception when Iam firing below query: Created: 03/Mar/10 Updated: 04/Mar/10 Resolved: 04/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 5.0 |
Type: | Bug | Priority: | Major |
Reporter: | Sudhakar Reddy Sanapa Reddy | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | 2 days | ||
Time Spent: | Not Specified | ||
Original Estimate: | 2 days | ||
Environment: |
Windows XP,JBoss |
Source ID: | ESPER - 9999 |
Number of attachments : | 0 |
Description |
Hi , I am getting below exception when Iam firing below query: Help : select trade.customerAccount, case when My Esper.cfg.xml: <!-- Import Packages and Classes --> Code Snippet : logger.debug("Begin of method configureListeners"); ERROR 10:45:16,471 (AggregatesEventManager.java 95) - Failed to configure listeners |
Comments |
Comment by Thomas Bernhardt [ 04/Mar/10 ] |
Questions are best addressed at user@esper.codehaus.org It may be best to study the examples and the documentation, else its yes to all questions. |
[ESPER-455] Aggregation when used with "prev" in where clause may return an incorrect result. Created: 27/Feb/10 Updated: 26/Sep/10 Resolved: 01/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Bug | Priority: | Minor |
Reporter: | Steve Bate | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | FlappingTest.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
I've attached a unit test to demonstrate a scenario that results in negative results from the count function. |
Comments |
Comment by Thomas Bernhardt [ 27/Feb/10 ] |
Assigned to 4.0 release. |
Comment by Thomas Bernhardt [ 01/Sep/10 ] |
In 4.0 for aggregation queries we disallow "prev" in the where-clause and force use of the new "last(index, expression)" aggregation function, this is more consistent with count aggregation function. |
[ESPER-454] Timer thread caught unhandled exception in named window with time_batch Created: 23/Feb/10 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.2 |
Type: | Bug | Priority: | Major |
Reporter: | Mark Lin | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
OSX 10.6.2, Java 1.6.0_17 |
Attachments: | TestNamedWindowTimeBatchConcurrentSelect.txt |
Number of attachments : | 1 |
Description |
When trying to use named window with win:time_batch, Esper will get an unhandled exception after couple minutes. The EPL used to create named window: The EPL to insert data: The on select EPL used to select in named window when Latency event shows up: And here's the stack trace: |
Comments |
Comment by Thomas Bernhardt [ 27/Feb/10 ] |
Hi Mark, what version of Esper is this please? Best regards |
Comment by Mark Lin [ 15/Mar/10 ] |
Tom, We are running 3.3.0. However, as of late, I don't see this particular error anymore, however, as number of events start to increase, I am starting to see many of these error. And when they occur, although application doesn't crash, esper no longer process events. The EPL are essentially the same ones I pasted above, the big difference is we are sending 2X events. 2010-03-15 19:52:23,692 [com.espertech.esper.Timer-default-0] ERROR com.espertech.esper.timer.EPLTimerTask - Timer thread caught unhandled exception: 5602 Thanks, |
Comment by Mark Lin [ 18/Mar/10 ] |
I am very much java newbie, please pardon my immature attempt to debug. Additional info for this exception, java.lang.ArrayIndexOutOfBoundsException: 5602 Here's the line for TimeBatchView.java:223: newData = currentBatch.toArray(new EventBean[currentBatch.size()]); And the small piece in LinkedList.toArray function that caused the exception: if (a.length < size) The exception indicates that an array has been accessed with an illegal index. I am guess there might a case where the linked list grows after array allocation but before the for loop. So I added the code to monitor currentBatch size and a try clause around currentBatch.toArray. String _name = this.statementContext.getStatementName(); } catch(Exception e) { log.error(_name + " current size: " + currentBatch.size() + " exception: " + e.getMessage()); }When I eventually reproduce the problem, it did look like list grew before the loop, the exception tells us which index it tried to use. 2010-03-19 01:11:56,556 [com.espertech.esper.Timer-default-0] INFO com.espertech.esper.view.window.TimeBatchView - everestLatencyEvent batch size: 4763 I guess I can make a copy of the currentBatch to ensure it wont grow while doing toArray, but I am afraid to break other things. Or maybe someway to stop updating the batch without losing any event, but I couldn't find that. Any advice? Thanks, |
[ESPER-453] Repeated Max and Min on Named Window Aggregations Created: 22/Feb/10 Updated: 19/Mar/10 Resolved: 04/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Major |
Reporter: | Antonio Alegria | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
OS: Red Hat Enterprise Linux Server release 5.4 java version "1.6.0" |
Number of attachments : | 0 |
Description |
I have been having a problem with the Min and Max aggregation functions since I upgraded to Esper 3.3.0. I cannot accurately and purposefully reproduce the problem with generated data, but when it is running live what happens is that for several measurement periods the max and min values are repeated, then it changes and repeats again (e.g. max = 0.213, 0.213, 0.213, 1.1, 2, 2, 2, ...) which is incorrect, according with the input data (i checked). Other aggregation functions such as count and avg seem to be working correctly The funny thing is that this only happens when the aggregation is applied on a named window. If I directly declare the data window in the query there is no problem (see below): // Window: name string, value long insert into NamedWindow5m // This does not work fine // This works fine |
Comments |
Comment by Thomas Bernhardt [ 04/Mar/10 ] |
In enhancements340 branch |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-452] NPE in correlated subquery in select clause that fetches from named window Created: 21/Feb/10 Updated: 18/Jun/10 Resolved: 21/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following query produces an NPE: EPServiceProvider provider = EPServiceProviderManager.getDefaultProvider(); java.lang.NullPointerException |
Comments |
Comment by Thomas Bernhardt [ 21/Feb/10 ] |
bug fix in bugfix330 branch |
[ESPER-451] Memory leak in pattern with or-operator and permanently false subexpressions Created: 18/Feb/10 Updated: 19/Mar/10 Resolved: 27/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.3.0-JIRA451.jar |
Number of attachments : | 1 |
Description |
Reproduced by the following query: every s=SupportBean(string='E') -> When the 10-second interval passes, the "or" condition turns permanently false however memory allocated for the followed-by does not get released. |
Comments |
Comment by Thomas Bernhardt [ 19/Feb/10 ] |
please find the cumulative patch for use with release 3.3 attached. The patch corrects the following issues: Please place the patch in front of the esper-3.3.0.jar file in the classpath. Best regards |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-450] Row-based and/or column-based conversion function for SQL query results Created: 08/Feb/10 Updated: 19/Mar/10 Resolved: 04/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.4 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When an SQL result is a byte array, XML doc or other custom format or the column results represent POJO fields, it would be nice to allow registration of a conversion function: |
Comments |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-449] Create window fails for syntax providing column names and types explicitly and multiple data windows Created: 03/Feb/10 Updated: 19/Mar/10 Resolved: 27/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
See syntax http://esper.codehaus.org/esper-3.3.0/doc/reference/en/html_single/index.html#named_create_explicit For example, this fails: |
Comments |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-448] Allow expression as an index to a indexed property Created: 29/Jan/10 Updated: 01/Oct/10 Resolved: 01/Oct/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hi, I have an event MyEvent that exposes a property that is a List<SomeType> called MyList. MyEvent also exposes an int called MyInt. If I construct EPL where I "select MyList[0] from MyEvent" this is fine. It returns element 0 of the list. If I construct EPL where I "select MyList[MyInt] from MyEvent" this is NOT fine. It throws an exception. Have I missed something in the documentation to resolve this - or do I have to know the element in a list before I write my epl? ================= Looking the NEsper/Esper ANTLR grammar is appears to me that only literals are allowed as indexes for indexed properties. Support for expressions as indexes seems like it would be very useful. As a workaround, you can create a User-Defined Function (UDF) to get the indexed value using a property value as an index. For example, "select MyFn.GetItem(MyList, MyInt) from MyEvent". |
Comments |
Comment by Alexander Monakhov [ 08/Sep/10 ] |
Tom, just FYI. |
Comment by Thomas Bernhardt [ 08/Sep/10 ] |
In release 4.0 we are no longer supporting "[1..]" as a syntax, the new syntax is "[1:]" consistent with filter ranges. |
Comment by Alexander Monakhov [ 08/Sep/10 ] |
I see. Thanks for clarification. |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Released with version 4.0 in dot-operator syntax |
[ESPER-447] Memory Leak When using XMLEvent Created: 27/Jan/10 Updated: 27/Feb/10 Resolved: 27/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Parthasarathy Suryanarayanan | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
RHEL5 2.6.18-164.el5, Esper on Spring 2.6 on JBOSS EAP 4.3, -Xms2048m -Xmx5000m Oracle 11 |
Attachments: | Esper memory leak.doc issue.esper.cfg.xml |
Number of attachments : | 2 |
Description |
Set-up: We are using Esper core 3.1. Issue: Over a course of 24 ours we see memory leaks inside the application. A heap dump shows a lot of instances of the class "org.apache.xerces.dom.DeferredElementImpl". For example, for a 100K events over a course of 12 hours we see around 1 |
Comments |
Comment by Parthasarathy Suryanarayanan [ 27/Jan/10 ] |
The last statement should read "For example, for a 100K events over a course of 12 hours we see around 1.1 MM instances of the DeferredElementImpl class. " |
Comment by Thomas Bernhardt [ 27/Jan/10 ] |
Can you please provide the statements being run or ideally a simple Java class to reproduce? |
Comment by Parthasarathy Suryanarayanan [ 28/Jan/10 ] |
Tom I have a single EPL statement that is under the test here. select * from EventNane as ue, <DATABASE_QUERY1>, <DATABASE_QUERY2> where <DATABASE_QUERY1_RESULT>.property=<DATABASE_QUERY2_RESULT.property>=tabB.ALRTPFLID and ue.property=DATABASE_QUERY1_RESULT.property DATABASE_QUERY1 and DATABASE_QUERY2 have a single-row or very small result sets. Let me know if you need more information. |
Comment by Thomas Bernhardt [ 29/Jan/10 ] |
Do you have caching enabled? If you have please try to disable and see if the cache gets too big. |
Comment by Parthasarathy Suryanarayanan [ 29/Jan/10 ] |
Do you have caching enabled? If you have please try to disable and see if the cache gets too big. Does the memory leak occur if you send events that have the same property values? Can you please provide a test class if still experiencing a problem? |
[ESPER-446] Benchmark throws exception for weighted average sample Created: 25/Jan/10 Updated: 19/Mar/10 Resolved: 27/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
1. The benchmark application does not work for me when selecting any of the modes with the stat:weighted_avg view attached. The error is as follows: Exception in thread "main" com.espertech.esper.client.EPStatementException: Error starting statement: Error attaching view to parent view: Invalid view parameter expression 0, the expression returns a constant result value, are you sure? [select 'S0A' as ticker from Market(ticker='S0A').win:length(100).stat:weighted_avg('price', 'volume') ] |
Comments |
Comment by Thomas Bernhardt [ 25/Jan/10 ] |
Workaround or bug fix: Change statement to ... |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-445] Improve performance of match-recognize when large number of intermediate events Created: 17/Jan/10 Updated: 19/Mar/10 Resolved: 27/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.4 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.3.0-JIRA445.jar TestRowPatternRecognitionPerf.java |
Number of attachments : | 2 |
Description |
I want to detect an A event (event type = 1), followed by a C event (event type = 3), no matter how many other events occur between them. I used a the following syntax (or thereabout): select * from event1 where Then I fed the stream with an A event, a whole lot of B events, and a C event, for a wide range of devices. When the number of B events is very large (>10k) the performance starts to drop. |
Comments |
Comment by Thomas Bernhardt [ 17/Jan/10 ] |
Test code attached. |
Comment by Thomas Bernhardt [ 17/Jan/10 ] |
Bug fix patch attached, please place in front of your classpath. |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-444] Support for SQL GROUP BY WITH ROLLUP Created: 16/Jan/10 Updated: 14/Apr/14 Due: 16/Jun/10 Resolved: 13/Feb/14 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In the syntax "group by xxx, yyy, zzz rollup" the new rollup keyword would cause the engine to aggregate on all levels (root, xxx, xxx/yyy) in addition to aggregate on the level of xxx/yyy/zzz, outputting null values for each key for the aggregation. |
[ESPER-443] NEsper Output limited statement fails after ~90mins, eventually leading to Out Of Memory exception Created: 12/Jan/10 Updated: 18/Jun/10 Resolved: 18/Jan/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.2 |
Type: | Bug | Priority: | Major |
Reporter: | Darran Hayes | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP |
Number of attachments : | 0 |
Description |
The following statement fails after a period of time (just after 90mins on my machine, I think): select irstream Symbol as S, * (Query borrowed and changed from http://jira.codehaus.org/browse/ESPER-419) After a little debugging I think I've found the culprit. PerformanceObserverWin.MicroTime is overflowing on the return statement: public static long MicroTime } The return value becomes negative, which causes the timerCallback in the SystemTimerFactory.OnTimerCallback to never be invoked. I will add an attachment with some test code that should help to recreate the defect later today, if required? Runtime configuration is: Configuration configuration = SupportConfigFactory.GetConfiguration(); Same problem when setting InternalTimerMsecResolution to 100 (default). Another side-effect of this issue is that when the statement fails, memory consumption starts to increase eventually leading to Out Of Memory Exceptions. |
Comments |
Comment by Darran Hayes [ 12/Jan/10 ] |
Also occurs when output limiting is set as "output last every 1 sec" which is our preferable timing, changed to msec for testing purposes. |
Comment by Darran Hayes [ 12/Jan/10 ] |
Having some doubts about my initial explanation - what I observed was that the comparison: if (currTime < nextTime) { break; }Always evaluated to true, when the statement began to fail to notify my of events. With nextTime somehow being +ve, and currTime being -ve. Trying to recreate with some conditional breakpoints... Apologies for any confusion. |
Comment by Darran Hayes [ 13/Jan/10 ] |
Btw, I'm encountering this on 32bit XP |
Comment by Darran Hayes [ 13/Jan/10 ] |
Apologies for not providing a unit test, quite a tricky one to pin down this... Additional description of the bug follows: SystemTimerFactory.OnTimerCallback has the following implementation code: while (true) nextTime += interval; var callback = timerCallback; } Scenario 1: nextTime is initialised to a positive value from PerformanceObserver.MicroTime. Eventually PerformanceObserver.MicroTime overflows into the negative space and when this happens the evaluation of (currTime < nextTime) is always true until catch up or until PerformanceObserver.MicroTime overflows into a high enough postive value again. Scenario 2: nextTime is initialised to a negative value from PerformanceObserver.MicroTime. Eventually nextTime will become a positive value and when PerformanceObserver.MicroTime has started overflowing into the negative space, again a long delay will occur until it reverts. In my machine, PerformanceObserver.MicroTime spends about 30mins or more in negative space, before flipping, and vice versa. Without knowing the design constraints or performance requirements of this the PerformanceObserver.MicroTime method, I've provide some candidate solutions here: return (long)(((double)time * 1000000D) / (double)freq); // need to check double precision and performance cost of this approach, but it seems to be extremely accurate and never overflows. or: return time / (freq / 1000000L); // doesn't overflow, but is far less accurate than using doubles. Darran |
Comment by Aaron Jackson [ 18/Jan/10 ] |
Conversion to decimal eliminates the overflow that occurs during computation. |
[ESPER-442] NEsper: StockTicker example properties names are not correct Created: 11/Jan/10 Updated: 18/Jun/10 Resolved: 18/Jan/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.2 |
Type: | Bug | Priority: | Major |
Reporter: | Steve Bate | Assignee: | Aaron Jackson |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Setting the engine to do case-insensitive evaluation of property names fixes the problem. |
Comments |
Comment by Aaron Jackson [ 18/Jan/10 ] |
Fixed case of names in the example. Validated that the test functions and executes the sample properly. |
[ESPER-441] NEsper : Qos_SLA example fails Created: 11/Jan/10 Updated: 27/Feb/10 Resolved: 27/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Steve Bate | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The single quotes in the AverageLatencyMonitor query should be removed. |
Comments |
Comment by Thomas Bernhardt [ 27/Feb/10 ] |
fixed in nesper 3.2.1 |
[ESPER-440] NEsper: NamedWindowQuery example fails due to number precision Created: 08/Jan/10 Updated: 27/Feb/10 Resolved: 27/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Steve Bate | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
XP Pro 32 bit |
Number of attachments : | 0 |
Description |
The random doubles created for the sensor values will not match the SensorWindow fire-and-forget query because .NET rounds the number when the EPL string is formatted. StackOverflow has some related info: http://stackoverflow.com/questions/1421520/formatting-doubles-for-output-in-c They say .NET rounds to 15 digits while formatted, but I was seeing 12 digits rounding. I modified the random number generation to... double temperature = Math.Round(random.NextDouble()*10 + 80, 12); and this fixed the problem. Before the change, it failed (almost) every time depending on the specific random number generated for the first event. Other minor suggestions:
|
Comments |
Comment by Thomas Bernhardt [ 27/Feb/10 ] |
fixed in nesper 3.2.1 |
[ESPER-439] NEsper: MatchMaker example fails Created: 08/Jan/10 Updated: 27/Feb/10 Resolved: 27/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Steve Bate | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The reference to the event bean key "user" should be "User" in HandleFactoryEvents. The matchAlertListener must be initialized in the MatchMakingMonitor(MobileUserBean) constructor. This listener reference is later used in the delegate defined in SetupPatterns (resulting in a NullReferenceException). It seems the locateOther pattern should be destroyed before the new one is created in SetupPatterns. Otherwise, the patterns remain active and cause later assertion failures. |
Comments |
Comment by Thomas Bernhardt [ 27/Feb/10 ] |
fixed in nesper 3.2.1 |
[ESPER-438] .NET - Exception while parsing TicksFalloffStatement query Created: 08/Jan/10 Updated: 18/Jun/10 Resolved: 18/Jan/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.2 |
Type: | Bug | Priority: | Major |
Reporter: | Steve Bate | Assignee: | Aaron Jackson |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
com.espertech.esper.client.EPStatementException was unhandled I added the "cnt" property to the group by clause and it fixed the problem. |
Comments |
Comment by Steve Bate [ 08/Jan/10 ] |
This is in the NEsper MarketDataFeed example code. Sorry, I should have put that in the title of the issue. |
Comment by Aaron Jackson [ 18/Jan/10 ] |
Verified bug, fixed as prescribed, validated that fix worked as expected. |
[ESPER-437] NEsper does not support using a nonstatic instance method as an EPL property Created: 07/Jan/10 Updated: 18/Jun/10 Resolved: 18/Jan/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.2 |
Type: | Bug | Priority: | Major |
Reporter: | Steve Bate | Assignee: | Aaron Jackson |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | ResolveMethodAsEventPropertyTest.cs |
Number of attachments : | 1 |
Description |
For example... public class TestData } The EPL "select value from TestData" parsing fails (also tried "select Value from ..."). This works in the Java Esper 3.2 build. The NEsper error is... com.espertech.esper.client.EPStatementException: Error starting statement: Property named 'value' is not valid in any stream [select value from TestData] |
Comments |
Comment by Steve Bate [ 08/Jan/10 ] |
Attached an NUnit test case demonstrating the issue. |
Comment by Aaron Jackson [ 18/Jan/10 ] |
Issue was in MagicType resolution of properties. Method now resolves synthetic properties of type GetXXX() |
[ESPER-436] .NET Fully qualified event type class name resolution fails in some cases Created: 07/Jan/10 Updated: 27/Feb/10 Resolved: 27/Feb/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Steve Bate | Assignee: | Aaron Jackson |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP Pro. Visual Studio 2008 |
Number of attachments : | 0 |
Description |
This seems to be partially a .NET bug but it affects NEsper behavior. In some cases, the assembly.GetType() call in TypeHelper.ResolveType will return a System.Type with the incorrect FullName property. For example, I have two event classes TestData and A, defined in a namespace The result is that subsequent events are not matched against the EPL since other parts of the code are apparently able to fully resolve the A class name. (I'm still investigating how this happens...) For example, inside EventTypeIndex.FindType() the argument to the function is... {BeanEventType type=A}[com.espertech.esper.events.bean.BeanEventType]: {BeanEventType type=A} DeepSuperTypes: {com.espertech.esper.client.EventType[1]}Name: "NEsperTests.A" PropertyDescriptors: {com.espertech.esper.client.EventPropertyDescriptor[1]} PropertyNames: {string[1]} SuperTypes: {com.espertech.esper.client.EventType[1]} UnderlyingType: {Name = "A" FullName = "NEsperTests.A"}(Notice the fully qualified FullName) But the _eventTypes map key is... {BeanEventType type=A}[com.espertech.esper.events.bean.BeanEventType]: {BeanEventType type=A} DeepSuperTypes: {com.espertech.esper.client.EventType[1]}Name: "A" PropertyDescriptors: {com.espertech.esper.client.EventPropertyDescriptor[0]} PropertyNames: {string[0]} SuperTypes: {com.espertech.esper.client.EventType[1]} UnderlyingType: {Name = "A" FullName = "A"}This causes the runtime to believe the event is an unknown type. If I fully qualify the type name in the EPL then this problem is avoided. I don't know if this is only a problem with 1 character long class names or not. |
Comments |
Comment by Steve Bate [ 07/Jan/10 ] |
It appears the second path that resolves the correct NEsperTests.A class name uses event.GetType() (rather than TypeHelper.ResolveType) in EventAdapterServiceImpl.AdapterForObject(). More environment details: I'm running these as NUnit-compatible unit tests in Resharper 4.5. It's possible the reflective assembly-based type resolution is not working correctly in this environment. Just a wild guess... |
Comment by Steve Bate [ 07/Jan/10 ] |
Also, NEsper 2.1.0 didn't have this issue. |
Comment by Steve Bate [ 08/Jan/10 ] |
This may be a false alarm although the behavior is a bit surprising. I found that there was another class "A" defined elsewhere and existing the global namespace (global::A vs NEsperTests.A). The EPL parser was apparently finding the global "A" as it scanned assemblies and therefore that didn't match NEsperTests.A when events were sent. |
Comment by Aaron Jackson [ 18/Jan/10 ] |
I'm adding a few unit tests to simulate this behavior. Given the area you identified, it's also quite possible that caching that was added as part of 3.2 is coming into play as well. I'm starting by reviewing the type resolution capabilities which should be straight forward. |
Comment by Thomas Bernhardt [ 27/Feb/10 ] |
fixed in nesper 3.2.1 |
[ESPER-435] MultiKey hashcode should be improved Created: 04/Jan/10 Updated: 19/Mar/10 Resolved: 04/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Performance |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Artur Biesiadowski | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hello, fix |
Comments |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-434] Length window not considered for first event Created: 19/Dec/09 Updated: 20/Dec/09 Resolved: 19/Dec/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Axel Mueller | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Linux miraculix 2.6.28-16-generic #57-Ubuntu SMP Wed Nov 11 09:49:32 UTC 2009 x86_64 GNU/Linux |
Testcase included: | yes |
Number of attachments : | 0 |
Description |
Consider the following EPL: select * from StockTick(symbol='AAPL').win:length(2) having avg(price) > 6.0 AFAIK this should trigger an event if the average price of 2 ticks exceeds 6. import com.espertech.esper.client.*; public class exampleMain { public static class Tick { public Tick(String s, double p, long t) { symbol = s; price = p; timeStamp = new Date(t); }public double getPrice() {return price;}public String getSymbol() {return symbol;}public Date getTimeStamp() {return timeStamp;} @Override } private static Random generator = new Random(); public static void generateRandomTick(EPRuntime cepRT) { double price = (double) generator.nextInt(10); generateRandomTick(price, cepRT); }public static void generateRandomTick(double price, EPRuntime cepRT) { long timeStamp = System.currentTimeMillis(); String symbol = "AAPL"; Tick tick = new Tick(symbol, price, timeStamp); System.out.println("Sending tick:" + tick); cepRT.sendEvent(tick); }public static class CEPListener implements UpdateListener { public void update(EventBean[] newData, EventBean[] oldData) { System.out.println("Event received: " + newData[0].getUnderlying()); }} public static void main(String[] args) { EPRuntime cepRT = getEPRuntime(); System.out.println("*** The event should be triggered by the second tick ***"); generateRandomTick(4, cepRT); generateRandomTick(9, cepRT); generateRandomTick(3, cepRT); System.out.println(); cepRT = getEPRuntime(); System.out.println("*** A single tick should not trigger an event due to win:length(2) ***"); generateRandomTick(9, cepRT); System.out.println("... but the event is generated !?!?"); }private static EPRuntime getEPRuntime() { Configuration cepConfig = new Configuration(); cepConfig.addEventType("StockTick", Tick.class.getName()); EPServiceProvider cep = EPServiceProviderManager.getProvider("myCEPEngine", cepConfig); EPRuntime cepRT = cep.getEPRuntime(); EPAdministrator cepAdm = cep.getEPAdministrator(); EPStatement cepStatement = cepAdm.createEPL("select * from " + "StockTick(symbol='AAPL').win:length(2) " + "having avg(price) > 6.0"); cepStatement.addListener(new CEPListener()); return cepRT; }} |
Comments |
Comment by Axel Mueller [ 19/Dec/09 ] |
I should have read the documentation fully before (confusion between current window length and maximum window length). After the first tick only one tick is in the window event though the (maximum) window length is 2. |
[ESPER-433] Support variable remove/destroy Created: 15/Dec/09 Updated: 18/Dec/09 Resolved: 15/Dec/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
stmt1: create variable x .... fails - that is the x variable is not cleaned up fully (even with no statement refering to it). |
Comments |
Comment by Thomas Bernhardt [ 15/Dec/09 ] |
changes are in bugfix320 branch |
[ESPER-432] Dangling meta character in regexp hangs the engine Created: 14/Dec/09 Updated: 18/Dec/09 Resolved: 15/Dec/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Critical |
Reporter: | Pedro Teixeira | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestRegexpExpression.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
Creating the following stmt: select * from SupportBean where string regexp "any" will (correctly) raise an java.util.regex.PatternSyntaxException, It seems a locking issue, but I was not able to find it. |
Comments |
Comment by Thomas Bernhardt [ 14/Dec/09 ] |
Please provide test case, cannot reproduce. |
Comment by Pedro Teixeira [ 15/Dec/09 ] |
Thomas, I already had attached a unit test with the issue. Does it pass for you? |
Comment by Pedro Teixeira [ 15/Dec/09 ] |
jira removed the asterix surrounding "any" from the EPL. |
Comment by Thomas Bernhardt [ 15/Dec/09 ] |
Resolved in release 3.2 bugfix branch |
[ESPER-431] 20-stream join hangs query optimizer Created: 14/Dec/09 Updated: 18/Dec/09 Resolved: 14/Dec/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sample: StringWriter buf = new StringWriter(); String delimiter = ""; EPStatement stmt = epService.getEPAdministrator().createEPL(buf.toString()); |
Comments |
Comment by Thomas Bernhardt [ 14/Dec/09 ] |
Workaround is to use subqueries. |
Comment by Thomas Bernhardt [ 14/Dec/09 ] |
in 3.3 release |
[ESPER-430] PlugInProjectionExpression should allow more than one expression Created: 11/Dec/09 Updated: 19/Mar/10 Resolved: 04/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.3 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Major |
Reporter: | Pedro Teixeira | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | ESPER-430.patch ESPER-430.patch |
Number of attachments : | 2 |
Description |
"select customAgg(foo, barr) from Movies" is a valid EPL but when converted to an object model and then back to EPL, it becomes: Perhaps it is just a matter of changing PlugInProjectionExpression.toEPL |
Comments |
Comment by Pedro Teixeira [ 11/Dec/09 ] |
I've started working on a patch... let's see if it works |
Comment by Pedro Teixeira [ 11/Dec/09 ] |
The test case in this patch would benefit from someone suggesting a less fragile assertion. |
Comment by Pedro Teixeira [ 11/Dec/09 ] |
Changing Expressions facade also. |
Comment by Thomas Bernhardt [ 04/Mar/10 ] |
Thanks for the patch. Changes are in enhancements340 branch |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-429] Replace "childNodeType" with "parameterType" in section 12.2.3 Created: 10/Dec/09 Updated: 19/Mar/10 Resolved: 04/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Trivial |
Reporter: | Pedro Teixeira | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | 5 minutes | ||
Time Spent: | Not Specified | ||
Original Estimate: | 5 minutes |
Attachments: | esper-429.diff |
Number of attachments : | 1 |
Description |
replace "childNodeType" with "parameterType" in the following extract in section 12.2.3: public void validateMultiParameter(Class[] parameterType, } |
Comments |
Comment by Pedro Teixeira [ 10/Dec/09 ] |
patch for doc |
Comment by Thomas Bernhardt [ 04/Mar/10 ] |
Thanks for the patch! |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-428] EsperIO / CSV - support for timedelta column Created: 09/Dec/09 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EsperIO/CSV could support a timedelta colum similar to the optional timestamp column header1, ..., timedelta meaning etc. |
Comments |
Comment by Thomas Bernhardt [ 21/May/12 ] |
Can be derived by Excel transformation from timestamp |
[ESPER-427] EsperIO / support for merged CSV files Created: 09/Dec/09 Updated: 26/Sep/12 |
|
Status: | Open |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | Esper wishlist |
Type: | New Feature | Priority: | Minor |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EsperIO/CSV could support merged CSV rather than using multiple files and an AdapterCoordinator EventType:column1, column2, ....... OtherEventType: otherColumnX This would require to detect an EventType header row ('...:') in the middle of the file. |
[ESPER-426] EsperIO / update dependencies Apache commons bean and Spring core Created: 09/Dec/09 Updated: 26/Sep/10 Resolved: 01/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EsperIO could update its Apache commons beans dependency to 1.8.2. Currently 1.7.0 |
Comments |
Comment by Thomas Bernhardt [ 18/Dec/09 ] |
Dependency updates planned for 4.0 release |
Comment by Thomas Bernhardt [ 01/Sep/10 ] |
In 4.0 all dependent jars are updated to the newest version for Esper and EsperIO. |
[ESPER-425] EsperIO / CSV - add support for nested properties Created: 07/Dec/09 Updated: 18/Dec/09 Resolved: 18/Dec/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Say an event defined with a class like this, with a nested class for point property with class Point (int x, int y) the CSV input adatper is not able to deal with a file like below to emit Loc event with a created Point - as it seems there is no nested property support: EsperIO / CSV should be improved as it is common practice to use rich (vs flat) events. |
Comments |
Comment by Thomas Bernhardt [ 18/Dec/09 ] |
in 3.3 release |
[ESPER-424] Self-join and order-by incorrect order Created: 05/Dec/09 Updated: 18/Dec/09 Resolved: 07/Dec/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | attachments_2009_12_05.zip |
Number of attachments : | 1 |
Description |
Confirmed the problem, unit test attached. Appears to occur for a join case. |
Comments |
Comment by Thomas Bernhardt [ 06/Dec/09 ] |
This problem is related to incorrect interpretation of the order-by expression as an alias related to an expression in the select clause. Workaround is to rename the select clause item to a different property name then used in the order by. select c1.event_criteria_id as ecid, |
Comment by Thomas Bernhardt [ 07/Dec/09 ] |
in branch bugfix320 |
[ESPER-423] Warning logged if Java event class is an interface with an attribute of a particular type and the actual event bean class returns a subclass of that attribute in the method footprint Created: 27/Nov/09 Updated: 04/Aug/10 Resolved: 04/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 5.0 |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esperIssue.jar |
Number of attachments : | 1 |
Description |
Esper employs byte code generation for fast access to event properties. When byte code generation is unsuccessful, the engine logs a warning and uses Java reflection to obtain property values instead. A known limitation is that when an interface has an attribute of a particular type and the actual event bean class returns a subclass of that attribute, the engine logs a warning and uses reflection for that property. Sample files are attached |
Comments |
Comment by Thomas Bernhardt [ 27/Nov/09 ] |
Workaround is to have the implementation match the footprint of the interface. For example: public interface TradeEvent { public Instrument getInstrument(); }public class TradeEventImpl implements TradeEvent { } Workaround: public Instrument getInstrument() { return equity; } |
Comment by Thomas Bernhardt [ 27/Nov/09 ] |
Sample warning logged: |
Comment by Thomas Bernhardt [ 04/Aug/10 ] |
Minor issue in very uncommon scenario without runtime impact. Bug fix would require cglib code change. |
[ESPER-422] Isolation -> merge to engine keep last event Created: 24/Nov/09 Updated: 27/Nov/09 Resolved: 27/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Alexis Agahi | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
OSX Java HotSpot(TM) Client VM (build 1.5.0_20-141, mixed mode, sharing) |
Attachments: | TimerIsoTest.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
When merging statement from isolated context to engine, it seems that it keep last sent event in isolated context even if the time window has expire. See attached unit test. |
Comments |
Comment by Thomas Bernhardt [ 27/Nov/09 ] |
test adjust time back: new CurrentTimeEvent(t-60*1000)); |
[ESPER-421] Case-when throws NullPointerException when condition returns null Created: 21/Nov/09 Updated: 18/Dec/09 Resolved: 22/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In below query, when "p.value" returns a null value, such as when p.value is a boxed integer and not initialized, the NPE is thrown. Sample query: insert into Posdata [11/20/09 13:24:01.904 ERROR] InboundUnitSendMap Unexpected error |
Comments |
Comment by Thomas Bernhardt [ 22/Nov/09 ] |
In release 3.3 |
[ESPER-420] Group-by with wildcard-select may present wrong value for non-aggregated and non-grouped properties Created: 10/Nov/09 Updated: 18/Dec/09 Resolved: 22/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem is related to http://jira.codehaus.org/browse/ESPER-419. This problem affects queries that have a select clause that selects wildcard plus one or more aggregations, and that use "group by". The value of non-aggregated and non-grouped properties in this case can be incorrect. The following sample query reproduces the issue: The value for device and minTemp are correct but the value for say an "id" property is not correct. Workaround is to select at least one non-aggregated non-grouped property: |
Comments |
Comment by Thomas Bernhardt [ 22/Nov/09 ] |
Release 3.3 |
[ESPER-419] Group-by with "output last" output rate limiting and wildcard select outputs last event and not last event per group Created: 06/Nov/09 Updated: 18/Dec/09 Resolved: 22/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The difference in output is between the following two statements: // outputs last event (not per symbol) // outputs last value per symbol Test code: Map<String, Object> event = new HashMap<String, Object>(); event = new HashMap<String, Object>(); event = new HashMap<String, Object>(); Thread.sleep(3000); |
Comments |
Comment by Thomas Bernhardt [ 06/Nov/09 ] |
Workaround is to list individual properties, or to add the group-by property, i.e. |
Comment by Thomas Bernhardt [ 22/Nov/09 ] |
In release 3.3 |
[ESPER-418] Statement fails to compile if the statement only has a where-clause and uses an alias Created: 04/Nov/09 Updated: 18/Dec/09 Resolved: 22/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hello I am using version 3.2.0 of Esper and have found what appears to be a bug in I am using a very simple POJO as a test object with the following fields all public class SimpleEvent The following statement fails to register because it cannot find select * from Event as A0 where A0.sourceId = 3 The problem appears to be in the optimization that is done in the comment is as follows What it is doing is if there are no joins and no windows defined it assumes 810: FilterStreamSpecRaw streamSpec = (FilterStreamSpecRaw) the problem is that by simple copying that up you end up with the following select * from Event( A0.sourceId = 3 ) as A0 this optimization makes the statement invalid because it is trying to In order to be able to make that level of optimization it would have to I have included a simple test case that will show the problem. it attempts "select * from Event where sourceId = protocolId" //passes - because |
Comments |
Comment by Thomas Bernhardt [ 04/Nov/09 ] |
Sample code: EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(); ==> fails to compile |
Comment by Thomas Bernhardt [ 04/Nov/09 ] |
Workaround is to remove the stream alias: It is confirmed that inspection/optimization of query execution causes this problem. |
Comment by Thomas Bernhardt [ 22/Nov/09 ] |
In release 3.3 |
[ESPER-417] support annotations in statement object model Created: 03/Nov/09 Updated: 18/Dec/09 Resolved: 22/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | Esper416and417.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
The statement object model does not compile annotation and this limitation does not seem documented. |
Comments |
Comment by Thomas Bernhardt [ 22/Nov/09 ] |
In release 3.3 |
[ESPER-416] statement name provided by API does not overrides annotation provided name Created: 03/Nov/09 Updated: 18/Dec/09 Resolved: 22/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | Esper416and417.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
Unlike what documentation says: The statement name is always the annotation provided one - unless none provided. Fix required in StatementLifeCycleSvcImpl:133 to skip annotation if optStatementName != null |
Comments |
Comment by Thomas Bernhardt [ 22/Nov/09 ] |
Release 3.3 |
[ESPER-415] statement object model fails on every-distinct Created: 03/Nov/09 Updated: 18/Dec/09 Resolved: 21/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | Esper415.java |
Testcase included: | yes |
Number of attachments : | 1 |
Description |
every-distinct fails to be compiled into the statement object model. See test case. java.lang.IllegalArgumentException: Could not map pattern expression node of type EvalEveryDistinctNode |
Comments |
Comment by Alexandre Vasseur [ 03/Nov/09 ] |
test case |
Comment by Thomas Bernhardt [ 21/Nov/09 ] |
Reassigned to 3.3 release, in eha3.3 branch. |
[ESPER-414] In some scenario, createEPL fails with IllegalStateException vs EPException Created: 02/Nov/09 Updated: 18/Dec/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The following - when compiled with no event defined at all (which is a mistake but can happen in some bulk compile scenario) - fails in the 3rd statement with an IllegalStateException and ideally should fail with an EPException: @Name("A") @Name("B") @Name("C") This stands in |
Comments |
Comment by Thomas Bernhardt [ 23/Nov/09 ] |
In release 3.3 |
[ESPER-413] Please add sources jars for Esper in Maven repository Created: 01/Nov/09 Updated: 20/Apr/11 Resolved: 19/Apr/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 3.2 |
Fix Version/s: | 4.2 |
Type: | Task | Priority: | Major |
Reporter: | Dave Syer | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Please add sources jars for Esper in Maven repository. The newest Maven deployments do not have source attachments (e.g. http://repo1.maven.org/maven2/com/espertech/esper/3.2.0/). |
Comments |
Comment by Thomas Bernhardt [ 27/Nov/09 ] |
Assigned to release 3.3 |
Comment by Thomas Bernhardt [ 18/Dec/09 ] |
Sources are available from download page; not sure what format Maven expects for sources? |
Comment by Thomas Bernhardt [ 30/Jul/10 ] |
Source are available from Subversion |
Comment by Jacques Morel [ 25/Sep/10 ] |
Add this to your pom and maven will automatically add a sources-jar to your artifacts deployment: <plugin> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <goals> <goal>jar</goal> <!--<goal>test-jar</goal>--> </goals> </execution> </executions> </plugin> Please reopen this! Thanks |
Comment by Thomas Bernhardt [ 26/Sep/10 ] |
Assigned to 4.1 release |
Comment by Daniel Mueller [ 07/Feb/11 ] |
I would appreciate to have this fixed as well. Makes it so much easier to explore the source code of dependencies within the major IDEs (eg. in m2eclipse, you can just tick 'download sources' within the maven configuration panel, and then sources get downloaded and attached to dependencies directly. Here's the description on Maven's homepage: http://maven.apache.org/plugin-developers/cookbook/attach-source-javadoc-artifacts.html Thanks |
Comment by Thomas Bernhardt [ 19/Feb/11 ] |
Assigned to 4.2 release - thanks for the link and patience |
Comment by Thomas Bernhardt [ 19/Apr/11 ] |
in release 4.2 |
Comment by Jacques Morel [ 19/Apr/11 ] |
Thanks for taking the time to do something not really in your main stream of work! It really helps! |
Comment by Daniel Mueller [ 20/Apr/11 ] |
Much appreciated to fix this one! Thanks |
[ESPER-412] Out of memory while using group by Created: 27/Oct/09 Updated: 27/Oct/09 Resolved: 27/Oct/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Ben | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hello, I am evalutaing esper and I am getting out of memory when using 'group by'. This out of memory issues is stopping us from using esper. We would like to use esper. Please help me with this issue. I have an Order event as defined below. Order I can get multiple order event updates for the same order. orderId is the key by which order updates are combined. My query to calculate customer position is select symbol, Input Expected Output Actual Output This is not working because I am not using Revision type. Is that correct? Or is there any other solution without using revision? I tried using revisions ConfigurationRevisionEventType configRev = new ConfigurationRevisionEventType(); ); epService.getEPAdministrator().createEPL("create window AllPositions.win:keepall() as OrderRevisions"); String expression = "select symbol, sum(totalFilledQuantity) as totalFilled, sum(price*filledQuantity) as totalValue from AllPositions group by symbol"); statement.addListener(new UpdateListener() }); This gives me the expected results. But when I send 50000 order updates per two seconds and if there are 1000000 unique orders, I am getting out of memory with 1G max memory. It looks like the memory is keep on increasing because it keeps all updates in memory instead of keeping only the merged events per symbol. win:keepall() may also be a culprit. But if I remove keepall(), the data output is not correct. Also keepall() is needed, so that I can do a query later on asking for all symbols and their totalFilled. Is this the correct way to use esper or am I using it incorrectly? Can you tell us how we can get the expected results and also create a window were we can keep the latest values per symbol to query later on. Thanks |
Comments |
Comment by Thomas Bernhardt [ 27/Oct/09 ] |
Can you please provide a test class, or let us know:
Right approach seems simple std:unique(orderId) Revision event types can also merge and only keep the versions required for a complete picture of properties, but don't seem required here. |
[ESPER-411] Operands of expression passed the wrong way round in patterns Created: 21/Oct/09 Updated: 18/Dec/09 Resolved: 27/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Major |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | Test.java |
Number of attachments : | 1 |
Description |
In the pattern: Any operation on the quantities changes the behaviour eg: Have attached test class (with main()) which shows the problem. Not tested pre 3.2. |
Comments |
Comment by Thomas Bernhardt [ 27/Nov/09 ] |
Assigned to 3.3 |
Comment by Thomas Bernhardt [ 27/Nov/09 ] |
A workaround is to formulate as [ every e1=TestEvent -> e2=TestEvent(quantity < e1.quantity) ] |
Comment by Thomas Bernhardt [ 27/Nov/09 ] |
in release 3.3 |
[ESPER-410] Support for {n} repetition of regex in match_recognize Created: 21/Oct/09 Updated: 23/Nov/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Wish | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 23/Nov/09 ] |
Deprioritized. |
[ESPER-409] Order-by clause not applied when pattern delivers multiple result rows for single incoming event Created: 21/Oct/09 Updated: 18/Dec/09 Resolved: 27/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.2.0-JIRA409.jar |
Number of attachments : | 1 |
Description |
Example statement: Sending A1, A2, B1 should deliver strings A2, A1 but delivers strings A1, A2. test method: epService.getEPRuntime().sendEvent(new SupportBean("A1", 1)); EventBean[] received = listener.getNewDataListFlattened(); |
Comments |
Comment by Thomas Bernhardt [ 24/Oct/09 ] |
We have issued a cumulative service pack (esper-3.2.0-JIRA409.jar) release as attached. Please use in front of the Esper jar file and make sure to remove prior issued patch files. The patch is cumulative and also includes fixes to:
Make sure to review the JIRA issues above. |
Comment by Thomas Bernhardt [ 27/Nov/09 ] |
In release 3.3 or use attached jar |
[ESPER-408] Support multiple crontab schedules in output rate limiting or support pattern in output rate limiting Created: 20/Oct/09 Updated: 23/Nov/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Wish | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 23/Nov/09 ] |
Can easily be accomplished via a variable: |
[ESPER-407] last() aggregator (undocumented) incorrectly mapped to count() Created: 20/Oct/09 Updated: 18/Dec/09 Resolved: 18/Dec/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The last() aggregator appears to compile OK using createEPL() but is reported to listeners incorrectly as 'count()'. Doing a prepared query produces an exception: EPPreparedStatement eps = admin.prepareEPL("select last(id) from TEST"); java.lang.IllegalArgumentException: Could not map expression node of type ExprLastNode |
Comments |
Comment by Thomas Bernhardt [ 27/Nov/09 ] |
Assigned to 3.3 |
Comment by Thomas Bernhardt [ 18/Dec/09 ] |
Release 3.3 |
[ESPER-406] OutOfMemory : StatementMetrics not cleaned up after statement destroyed Created: 13/Oct/09 Updated: 18/Dec/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Frederic Tardif | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
winxp jdk1.6 |
Attachments: | esper-406-patch.txt EsperTest.java StatementMetricHandle-footprint.png StatementMetricHandle-HeapDump.png |
Testcase included: | yes |
Number of attachments : | 4 |
Description |
If I run a simple program (EsperTest.java) which loops 300K times by:
it rapidly runs out of memory (see StatementMetricHandle.png memory/CPU graphs attached) with a big footprint of StatementMetricHandle. I thought that statistics engine was turned off by default, so why is there so many Metrics handle? |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/09 ] |
Workaround: assign a statement name. |
Comment by Thomas Bernhardt [ 14/Oct/09 ] |
Scheduled for release 4.0 |
Comment by Frederic Tardif [ 14/Oct/09 ] |
thanks for the workaround. It seems to work. |
Comment by Frederic Tardif [ 15/Oct/09 ] |
unfortunately, even by assigning a statement name, StatementMetricRepository would continue to put in a map the postfix names of the created statements, still ending-up as a OutOfMemory. attached esper-406-patch.txt which ensures that StatementMetrics are not computed when stated as disabled in the config |
Comment by Alexandre Vasseur [ 16/Oct/09 ] |
Just a note: you are running with a 64Mb heap which is very small. As a workaround to delay the issue use a larger heap with -Xmx JVM option |
Comment by Thomas Bernhardt [ 23/Nov/09 ] |
In release 3.3 |
[ESPER-405] Equals operator on object types in expressions should support inheritance Created: 10/Oct/09 Updated: 18/Dec/09 Resolved: 21/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Wish | Priority: | Minor |
Reporter: | Frederic Tardif | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
winxp jdk6 esper-3.2 |
Attachments: | esper-405-patch.txt EsperTestConcreteObject.java EsperTestObject.java |
Testcase included: | yes |
Number of attachments : | 3 |
Description |
As you can see in the attached example, if I define a statement like: select * from MyEvent where key = ? for which MyEvent.Key returns an interface, since the parameter given to the prepared statement is obviously a concrete object of this type, I hit a statement compilation error: Exception in thread "main" com.espertech.esper.client.EPStatementException: Unexpected error compiling statement: java.lang.IllegalStateException:Coercion type class java.lang.Object not numeric [select * from EsperTestObject$MyEvent where (key = EsperTestObject$MyObjectKey@1df5a8f)] I know this has already been discussed in |
Comments |
Comment by Thomas Bernhardt [ 10/Oct/09 ] |
Esper has support for instanceOf, in Java the "=" would also not compile? |
Comment by Frederic Tardif [ 10/Oct/09 ] |
Not sure that I have explained myself clearly. In java, I can always do obj1.equals(obj2) even if obj1 is hidden behind an interface and obj2 would be known as the concrete class. Indeed we can apply equals on whatever objects... And I cannot see how the instanceof can help at this point since anyway the objects used to filter are presented under an Interface and I might not even know at runtime what are their implementation. The idea is to ensure that the statement is triggered if the "getKey()" of the MyEvent sent 20K times to esper is the same object as the one which parametrized the statement, whatever its concrete class (by doing obj1.equals(obj2) ) . If we simplify a bit my example (attached EsperTestConcreteObject.java) by removing the IKey interface to compare directly the concrete classes and not the interface (MyKey instead of IKey) , Esper would do the correct filtering and trigger my statement (as defined in I know I could bypass this by defining a custom method: And that would obviously work but it makes the statement a bit clumsy. |
Comment by Thomas Bernhardt [ 12/Oct/09 ] |
In Java, one can perform "string.equals(integer)" without any type safety so since Esper provides full type safety the straight equals is not an option. What we can do is enhance the engine to look at user objects and determine if there is an "extends" or "implements" relationship and in such case allow "equals" to take place. Scheduled for 4.0 release. |
Comment by Frederic Tardif [ 13/Oct/09 ] |
Thanks, that would already be much more coherent with what we are used to see in java. I see that you plan to fix this in version 4 of Esper, do you have any timeline for this release? Is there a possible patch in the meantime. |
Comment by Frederic Tardif [ 13/Oct/09 ] |
Just for tracking sake, I have add a comment in |
Comment by Frederic Tardif [ 15/Oct/09 ] |
Patch attached to enable "= operator" in statements on objects using inheritance |
Comment by Thomas Bernhardt [ 21/Nov/09 ] |
Assigned to release 3.3, in enh3.3 branch |
[ESPER-404] Statement resources not cleaned up after statement destroy keeping last event Created: 09/Oct/09 Updated: 18/Dec/09 Resolved: 21/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Frederic Tardif | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
winxp jdk1.6 |
Attachments: | Equality.java EqualsStatementLoadTest.java EqualsStatementLoadTest.png EsperTest.java EsperTest-profile.png |
Testcase included: | yes |
Number of attachments : | 5 |
Description |
I notice quite a lot of leak with the objects defined within the statements of my application. To nail it down, I have tried with a very simple example (sending 20K times an object and being notified back on a defined statement (Select * from MyEvent)). The listing is attached in the email. Once the 20K notifications completed and the initial statement destroyed, I can still see on the profiler 1 instance of a "MyEvent" retained by StatementResultImpl (see image attached). Since the EPStatement.destory() javadoc states that "Destroy the statement releasing all statement resources.", I would have expected that nothing anymore would keep an allocation on any of MyEvent object. Is that the desirable behavior? Thanks |
Comments |
Comment by Thomas Bernhardt [ 12/Oct/09 ] |
Changed to minor. |
Comment by Thomas Bernhardt [ 12/Oct/09 ] |
scheduled for 4.0 |
Comment by Frederic Tardif [ 13/Oct/09 ] |
Now this minor leak sorted out, my usage of Esper unfortunately exploit it in an awkward way, causing the leak to explode. I don't know if that should be referred as another ticket, but it shows a bit criticality perspective on both As you can see in the example EqualsStatementLoadTest.java attached above, I have an application for which sessions register and destroy many time statements (using preparedstatement: [select * from MyEvent(Equality.eq(key, ?))]. Since Esper does not yet support inheritance when filtering on equaled objects, the statements are made against a custom eq(obj1, obj2) method defined in equality.java also attached (that's where this ticket meets When I run a scenario which does 20K times the register of a new statement, the trigger of the listener against the sent event and the destroy of the statement, I end up with a "random" instances of leaking events as identified previously in the ticket (see EqualsStatementLoadTest.png attached). If the statement would not use a custom method to filter equality of the object but instead use a normal Esper = filtering [select * from MyEvent(key = ?)], only one instance of the MyEvent would remain at the end (which is a more acceptable leak...) |
Comment by Thomas Bernhardt [ 21/Nov/09 ] |
Assigned to 3.3 release, in branch enhancements330 |
[ESPER-403] First-unique data window used with named window causes on-delete to misbehave Created: 09/Oct/09 Updated: 19/Mar/10 Resolved: 04/Mar/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.4 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestFirstUniqueWithOnDelete.java |
Number of attachments : | 1 |
Description |
See attached test case, the on-delete returns two rows and should only return a single row. |
Comments |
Comment by Thomas Bernhardt [ 23/Nov/09 ] |
This change will be made in release 4.0 as it will mean a minor change in remove/insert stream of first-unique, and therefore as its altering first-unique behavior will need to be done in a major release. |
Comment by Thomas Bernhardt [ 27/Feb/10 ] |
As it is more important to use to keep exactly the same behavior in the engine between each minor release 3.x, this change is assigned to 4.0 (JDK6). |
Comment by Dan DI Spaltro [ 28/Feb/10 ] |
Is there a patch for this, right now I think this problem is causing my application to OOM, since I think its retaining multiple events beyond the first unique and deletes don't seem to be actually erasing the reference. |
Comment by Thomas Bernhardt [ 04/Mar/10 ] |
Assigned to 3.4 release, bug fix is in enhancements340 branch |
Comment by Thomas Bernhardt [ 19/Mar/10 ] |
in release 3.4 |
[ESPER-402] Pattern with two NOT-operators connected by AND-operator throws ConcurrentModificationException (1 thread) Created: 28/Sep/09 Updated: 18/Dec/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | TestCoModificationException.java |
Number of attachments : | 1 |
Description |
Can be reproduced as below. Note that a NOT-operator does not likely have meaningful behavior unless combined with a timer, since looking for the absence of an event makes sense only when given a time period how long to look for, see doc. There assigned "minor" priority. public void testIt() { EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(); engine.getEPAdministrator().getConfiguration().addEventType("CallWaiting", SupportBean_A.class); engine.getEPAdministrator().getConfiguration().addEventType("CallFinished", SupportBean_B.class); engine.getEPAdministrator().getConfiguration().addEventType("CallPickedUp", SupportBean_C.class); String pattern = " insert into NumberOfWaitingCalls(calls)\n" + " select count(*)\n" + " from pattern[every call=ConcurrentModificationExceptionCallWaiting ->\n" + " (not CallFinished(id=call.id) and\n" + " not CallPickedUp(id=call.id))]"; engine.getEPAdministrator().createEPL(pattern); engine.getEPRuntime().sendEvent(new SupportBean_A("A1")); engine.getEPRuntime().sendEvent(new SupportBean_B("B1")); engine.getEPRuntime().sendEvent(new SupportBean_C("C1")); } |
Comments |
Comment by Thomas Bernhardt [ 28/Sep/09 ] |
Note no multiple threads required, it is a question of stopping AND-operator child nodes and removing nodes from the active list in the same loop, single thread. |
Comment by Thomas Bernhardt [ 30/Sep/09 ] |
i received the ConcurrentMoficationException using esper 3.1.0 for the pattern: events: |
Comment by Thomas Bernhardt [ 12/Oct/09 ] |
schedule for 4.0 release |
Comment by Thomas Bernhardt [ 23/Nov/09 ] |
Bug fix in release 3.3 |
[ESPER-401] EsperIO / JMS - wrong doc Created: 28/Sep/09 Updated: 18/Dec/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EsperIO JMS fails if following doc with Must be changed in doc to use eventTypeName in Spring xml as per Esper 3.0 and after refactoring of the client api. |
[ESPER-400] Documentation fix: "7.2. Logical And Comparsion Operators" => Comparison Created: 25/Sep/09 Updated: 18/Dec/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Trivial |
Reporter: | Guillaume Perrot | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Local reference documentation (the one provided in the downloaded archive), single html edition. |
Number of attachments : | 0 |
Description |
"7.2. Logical And Comparsion Operators" => Comparison |
[ESPER-399] Provide analog of prev function that behaves as aggregate Created: 24/Sep/09 Updated: 18/Dec/09 Resolved: 18/Dec/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | 3.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | aggregator_examples.tar.gz |
Number of attachments : | 1 |
Description |
If you use the prev function along with aggregates in a group by, then it will be treated the same as if a non aggregated value had been selected from the event - so one row is returned for every event in the view. This does not seem intuitive to me- for example, prev(0, price) returns the same price for events in a window and so should behave the same as max(price). AFAIK there is currently no convenient way of getting properties of the first or last events out of a window along with a set of aggregates. If the prev function can't be changed then it would be nice to have an analogue. |
Comments |
Comment by Thomas Bernhardt [ 28/Sep/09 ] |
Can you please provide an example statement, example input and output? |
Comment by Mitch [ 29/Sep/09 ] |
OK, I guess this only occurs in pretty specific circumstances. Here is an example: MyEvent has row (a uid), quantity and colour and the listener outputs row count along with all rows it receives: case 1 with aggregates only: Now suppose we wanted to know the row number at the point the aggregate was computed. My guess was to do the following: case 2 with prev: new=3 map= {colour=blue, avg(quantity)=102.0, prev(0,row)=3}new=3 map= {colour=blue, avg(quantity)=102.0, prev(0,row)=5}Multiple rows were returned when I was hoping for only the last one. Output clauses do not help. With sequential row ids I am using the workaround of max(id) but this is not pretty or general. Use case: knowing the uid at the point aggregates are computed is handy for doing joins and for reporting. |
Comment by Mitch [ 29/Sep/09 ] |
What I am trying to get across is that in a temporal context it makes perfect sense to have 'aggregates' like first() and last() which would be meaningless in ordinary SQL. Unless I am missing a trick I dont think esper provides this. |
Comment by Thomas Bernhardt [ 12/Oct/09 ] |
You will find that Esper 3.2 allows the "last()" function for aggregation, it is not currently documented and supported, subject to change. |
Comment by Thomas Bernhardt [ 12/Oct/09 ] |
Alternatively consider your own plug-in aggregation function. |
Comment by Mitch [ 12/Oct/09 ] |
Thanks. There are a bunch of general purpose temporal aggregates I can think of- Ill see how I get on implementing them. |
Comment by Thomas Bernhardt [ 12/Oct/09 ] |
If would be great if you can attach them here when done, is possible with test code. |
Comment by Mitch [ 15/Oct/09 ] |
Attached shows three new temporal aggregators in action: leaving() returns true if events have started leaving view. There are five examples in all. The src files are not part of a package- (compile with javac *.java) after uncommenting epl in TestEsper.java |
Comment by Mitch [ 20/Oct/09 ] |
The built in last() aggregator has a serious bug in 3.2 so I don't recommend its use yet- especially not in a prepared statement. It seems its expression name is incorrectly mapped to "count". So if you do "select last(eventID) from TestEvent" it actually gets reported to the listener as count(eventID). |
Comment by Mitch [ 20/Oct/09 ] |
Comment by Thomas Bernhardt [ 18/Dec/09 ] |
In release 3.3 |
Comment by Mitch [ 18/Dec/09 ] |
I'm guessing you missed aggregate examples (as you did ask). |
[ESPER-398] Escape syntax for quote and double quote not working Created: 22/Sep/09 Updated: 18/Dec/09 Resolved: 28/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | epl_clauses.html esper-3.2.0-JIRA398.jar |
Number of attachments : | 2 |
Description |
select * from Events where text='A\'B' This statement is expected to search for events having text = A'B. But when we send such events, they are not getting selected. It is expecting text = A\'B. |
Comments |
Comment by Thomas Bernhardt [ 22/Sep/09 ] |
Attached please find the cumulative service pack that addresses the following issues: The patch file is cumulative and replaces esper-3.2.0-JIRA396.jar. PLEASE REVIEW the attached documentation, 4.2.4. Escaping Strings, and determine whether the patch is appropriate. The patch may affect your escape syntax for example in regular expressions. |
[ESPER-397] Add UTC current timestamp function returing millisecond since Created: 18/Sep/09 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | None |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The keyword current_timestamp returns the time in local time. Can I propose that we add current_timestamp_utc an upcoming release. While timestamps can be converted between timezone's using static methods, I think it would be useful if the two most common formats are readily and easily available through keyword. |
Comments |
Comment by Thomas Bernhardt [ 23/Nov/09 ] |
Can someone provide a function to convert from engine date to UTC? |
Comment by Thomas Bernhardt [ 21/May/12 ] |
can easily be provided by UDF, not adding function to core language |
[ESPER-396] Unbound stream and aggregating/grouping by unlimited key (i.e. timestamp) configurable state drop Created: 17/Sep/09 Updated: 18/Dec/09 Resolved: 21/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | epl_clauses.html esper-3.2.0-JIRA396.jar |
Number of attachments : | 2 |
Description |
This improvement is for handling the case when there is no data window and aggregation and grouping by an expression that creates an unlimited number of keys, i.e. a timestamp value. Sample query: Since for unbound streams (no data window) the engine cannot determine when the aggregation state should be dropped for a certain timestamp, we we provide a @Hint to instruct how long aggregation state may be held. Example new query: |
Comments |
Comment by Thomas Bernhardt [ 21/Sep/09 ] |
Patch and updated documentation attached, see 4.6.2.1. Hints Pertaining to Group-By |
[ESPER-395] Documentation error lastevent without parenthesis Created: 17/Sep/09 Updated: 18/Dec/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
under 4.14. Subqueries: select assetId, (select zone from ZoneClosed.std:lastevent) as lastClosed from RFIDEvent should be select assetId, (select zone from ZoneClosed.std:lastevent()) as lastClosed from RFIDEvent |
[ESPER-394] ClassCastException Created: 17/Sep/09 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
10:11:56.484 [com.espertech.esper.Inbound-SIMULATION-0] ERROR c.e.e.c.t.InboundUnitSendMap - Unexpected error processing Map event: java.lang.ClassCastException |
Comments |
Comment by Mathias Bogaert [ 17/Sep/09 ] |
Unfortunately, this is all I get in my logger. No idea where it comes from, need to analyze further. |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
Please collect useful information before creating a JIRA. Is the exception thrown by your listener code? |
[ESPER-393] Stream name alias not available for use in where-clause Created: 16/Sep/09 Updated: 18/Dec/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When providing an alias, such as "evt" below, the alias works fine in the select-clause but does not compile the statement if used in the where-clause: // works fine // does not compile |
Comments |
Comment by Thomas Bernhardt [ 16/Sep/09 ] |
Doc ref: Change implementation note (FilterStreamSpecRaw.java) , new String[] {super.getOptionalStreamName()}, context.getEngineURI()); |
[ESPER-392] Nested properties with keywords can not be escaped with ticks Created: 15/Sep/09 Updated: 18/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.5 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
see http://jira.codehaus.org/browse/ESPER-390 |
[ESPER-391] .NET LinkedHashSet performance or hash distribution poor on large join Created: 10/Sep/09 Updated: 18/Dec/09 Resolved: 14/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Aaron Jackson | Assignee: | Aaron Jackson |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Issuing the query below causes a geometric expansion of tests within the LinkedHashSet<T>. Approximately 10 calls to EPRuntime.Send resulted in the following expansion of calls: 100.00 % Join - 15381* ms - 10 calls - com.espertech.esper.epl.join.JoinSetComposerImpl.Join(EventBean [] [], EventBean [] [])
Insert into MA |
Comments |
Comment by Aaron Jackson [ 14/Sep/09 ] |
Added FIFOHashSet to .NET collections. FIFOHashSet improves performance of ordered set mechanics, but also provides better detail about hash distribution. Analysis revealed that distribution across hash buckets was performing poorly and a change was made to MultiKey to address the hashing scheme. Old algorithm: For item in list: hash = hash ^ item.hashCode New algorithm: For item in list: hash = 391 * hash ^ item.hashCode Results before adjustments to hashcode: Hashtable chains were over 10k elements long in some cases which yielded long search times and far too many comparisons. Results after adjustments to hashcode Hashtable chains never exceeded 32 elements long and performance improved greatly. |
[ESPER-390] .NET Nested properties can not be escaped with ticks Created: 10/Sep/09 Updated: 18/Dec/09 Resolved: 14/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Aaron Jackson | Assignee: | Aaron Jackson |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Nested properties that are escaped using a tick string will throw an exception indicating a reserved keyword. The problem occurs because the property is processed properly during the first pass where the ticks are stripped. Subsequent parsing of the property passes the unticked property name into the ANTLR parser which yields the exception. Example: select `timestamp.Hour` from MyTimeEvent The CompileEPL() will succeed, but the Start() method will fail which trying to process the property. |
Comments |
Comment by Aaron Jackson [ 14/Sep/09 ] |
Added feature to PropertyParser that escapes keywords that are contained within a property when it is parsed. This ensures that the reserved keywords pass properly through the ANTLR parser when they are resubmitted. Added unit tests to ensure that escaped nested property feature works as advertised and verified that other unit tests were not affected by these changes. One unit test changed to reflect different error text when submitted. |
[ESPER-389] startAllStatements() starts rules in unpredictable order Created: 08/Sep/09 Updated: 18/Dec/09 Resolved: 23/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.1 |
Fix Version/s: | 3.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Linux, sun jdk 1.6.0_14 |
Number of attachments : | 0 |
Description |
Stopping all rules and then restarting them can cause unpredictable results including Exceptions The following snippet produces EPStatement statement1 = admin.createEPL("create window MYWIN.win:length(3) as select * from MyEvent"); Shouldn't the compilation order be preserved when restarting rules? |
[ESPER-388] Provide option to auto-remove event type when all statements referencing a type are destroyed Created: 08/Sep/09 Updated: 18/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | 3.5 |
Type: | Improvement | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
destroy() and destroyAll() do not remove implicit event types created by insert statements. I am not aware of any method of removing event types from an engine once they are created which can make it difficult to manage statements. The following snippet shows the problem, throwing: EPStatementException: Error starting statement: Event type named 'FOO' has already been declared with differing column name or type information EPStatement statement = admin.createEPL("insert into FOO select x from MyEvent"); It could be argued that 'FOO' has to be preserved for other statements in the case that a destroy() method is called on a single statement. However it would be much more helpful if Event types were removed when no longer referenced. And destroyAll() should surely do just what it implies. This is causing a problem because it seems there is no robust way of loading arbitrarily modified rules without restarting the engine. |
Comments |
Comment by Thomas Bernhardt [ 08/Sep/09 ] |
Removal of an event type : Checking if an event type is referenced: |
Comment by Mitch [ 08/Sep/09 ] |
I concur its not a bug (though could usefully have been warning in API doc). Thanks for the info on how to remove event types. However auto remove superior as obviates need for applications to track event types. |
Comment by Thomas Bernhardt [ 23/Nov/09 ] |
Assigned to release 5. |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Feature include in 3.5 module |
[ESPER-387] Create window with insert fails with NullReferenceException Created: 03/Sep/09 Updated: 04/Sep/09 Resolved: 04/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 3.1 |
Fix Version/s: | 3.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Aaron Jackson | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Testcase included: | yes |
Number of attachments : | 0 |
Description |
Creating a window with a select an insert statement (as shown in TestNamedWindowInsertFrom.TestInsertWhereOMStaggered) throws NullReferenceException. Failure occurs because statementSpec.CreateWindowDesc.InsertFromWindow is null. InsertFromWindow is not set during the constructor and as such defaults to null. However, StatementLifecycleSvcImpl.compile does not set the value because the stream is already compiled. The following is a unit test that demonstrates the issue: public void testBroken() { EPStatement statement = epService.getEPAdministrator().createEPL( "create window testWindow3.win:keepall() as select * from com.espertech.esper.support.bean.SupportBean insert where (IntPrimitive = 10)"); statement.destroy(); } |
Comments |
Comment by Thomas Bernhardt [ 04/Sep/09 ] |
Changed to .NET in title and NEsper component |
Comment by Thomas Bernhardt [ 04/Sep/09 ] |
This also occurs in the java version. Version 3.2 will present the following error: |
Comment by Thomas Bernhardt [ 04/Sep/09 ] |
in 3.2 release |
[ESPER-386] "Output when" with variables fails when multiple statements refer to same variable Created: 02/Sep/09 Updated: 03/Sep/09 Resolved: 02/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For example: When the "myvar" variable turns true only a one statement actually outputs, the other statement will wait for the next event rather then output. |
Comments |
Comment by Thomas Bernhardt [ 02/Sep/09 ] |
in 3.2 |
[ESPER-385] NPE thrown on removeAllListeners for destroyed statement Created: 28/Aug/09 Updated: 03/Sep/09 Resolved: 28/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
After destroying a statement and calling removeAllListeners(), an NPE gets thrown. The method should not throw an exception when removing all listeners if the statement is destroyed, however the remove operation has no effect on destroyed statements. |
Comments |
Comment by Thomas Bernhardt [ 28/Aug/09 ] |
in 3.2 release |
[ESPER-384] Allow return multiple columns on a corelated subselect Created: 26/Aug/09 Updated: 24/Nov/09 Resolved: 24/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hello, I am using an inner select in order to add output. For example: Now, using the same inner select, I want to add to output parameters. Of course I can do it using two selects: But I want to be more efficient, and to extract these two parameter at the same time, for example: Is it possible? |
Comments |
Comment by Thomas Bernhardt [ 26/Aug/09 ] |
the EPL currently follows the SQL standard and that does not allow multiple results in the subselect. I agree it would be helpful to allow multiple selected values as it would make the query easier to read and increase efficiency. As a workaround, it is possible to use an array in the subselect and thereby return a single column, i.e. as myarray from ...) from ... Best regards, |
Comment by Thomas Bernhardt [ 24/Nov/09 ] |
This features request is for discussion, and tentatively assigned to release 5:
It is unclear how the multiple columns would behave when returned. For example: What should the "value" column be, a nested type? Or should above statement not compile? |
[ESPER-383] Add feature to allow JDBC queries to use java.util.Date parameters Created: 24/Aug/09 Updated: 03/Sep/09 Resolved: 02/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | New Feature | Priority: | Minor |
Reporter: | Raptor Audio | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | PollExecStrategyDBQuery.java.diff |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
Some JDBC drivers silently convert java.util.Date objects into java.sql.Timestamps (Mysql) and others don't (Oracle). Please add a check for java.util.Date types before calling preparedStatement.setObject. in the file PollExecStrategyDBQuery.java. This will add flexibility within Esper to use existing Java Event POJO's (containing java.util.Date's) as part of PreparedStatement substitution parameters. A patch has been provided that implements this functionality. |
Comments |
Comment by Thomas Bernhardt [ 02/Sep/09 ] |
in 3.2 branch |
[ESPER-382] ConcurrentModificationException for named window select/insert/delete Created: 16/Aug/09 Updated: 03/Sep/09 Resolved: 28/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-3.1.0-JIRA382.jar |
Number of attachments : | 1 |
Description |
com.espertech.esper.client.EPException: java.util.ConcurrentModificationException Caused by: java.util.ConcurrentModificationException ... 6 more |
Comments |
Comment by Thomas Bernhardt [ 20/Aug/09 ] |
We are working on reproducing this exception. It is reported to occur with multiple similar named windows under a certain configuration that is being narrowed down. |
Comment by Thomas Bernhardt [ 20/Aug/09 ] |
This problem affects users that
The problem stems from the engine attempting to re-use the stream for the on-select triggering event based on the same filter, thereby acquiring the wrong lock when querying named windows. |
Comment by Thomas Bernhardt [ 20/Aug/09 ] |
Attached esper-3.1.0-JIRA382.jar addresses this issue. Place in classpath IN FRONT of esper-3.1.0.jar |
[ESPER-381] Correct documentation for 10.3 XML Configuration File Created: 31/Jul/09 Updated: 03/Sep/09 Resolved: 31/Jul/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.1 |
Fix Version/s: | None |
Type: | Task | Priority: | Minor |
Reporter: | Charles Openshaw | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The event-type and auto-import nodes in the documentation 10.3 should occur outside the esper-configuration node <?xml version="1.0" encoding="UTF-8"?> should become: <?xml version="1.0" encoding="UTF-8"?> <event-type alias="StockTick" class="com.espertech.esper.example.stockticker.event.StockTick"/> Without this change the method com.espertech.esper.client.ConfigurationParse.DoConfigure(Configuration configuration, XmlNode rootNode ) does not evaluate these nodes. |
Comments |
Comment by Charles Openshaw [ 31/Jul/09 ] |
Sorry my bad, I was mixing up my App.Config file and my esper.cfg.xml file in an early test project of mine. Apologies. Charlie |
[ESPER-380] Auto-detect TimesTen driver for Oracle metadata SQL access workaround Created: 30/Jul/09 Updated: 03/Sep/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
java.sql.SQLException: Driver not capable Currently it auto-detects the oracle driver. |
Comments |
Comment by Thomas Bernhardt [ 30/Jul/09 ] |
For a statement that includes the "metadatasql" marker, we can also look into defaulting to sample. |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
fix in 3.2 branch |
[ESPER-376] Restriction in element not parsing to right type for XSD-backed event type Created: 22/Jul/09 Updated: 03/Sep/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When I declare an event field of type "xs:decimal" in XSD file in the following way, everything is fine: <xs:element name="orderAmount" type="xs:decimal"/> But when I use restriction-based XSD syntax: <xs:element name="orderAmount"> Esper recognizes "orderAmount" field as Integer type, and fails to parse following XML snippet: <orderAmount>253.23</orderAmount> I think the problem is in |
Comments |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
fix in 3.2 branch |
[ESPER-375] Contained event selection for certain XML creates ClassCastException Created: 22/Jul/09 Updated: 03/Sep/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
"Contained-Event Selection" in Esper 3.1.0, i have found a bug. Even a simple statement like: select * from EventPageVisit[page.boxList.box] throws an exception: Fix diff: Index: esper/src/main/java/com/espertech/esper/event/xml/DOMNestedPropertyGetter.java for (int i = 0; i < domGetterChain.length - 1; i++)
if (value == null) |
Comments |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
fix in 3.2 branch |
[ESPER-374] com.espertech.esper.filter.InSetOfValuesConstant throws a NullpointerException in equals method when the constant is null Created: 21/Jul/09 Updated: 07/Aug/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Michael Chan | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Caused by: java.lang.NullPointerException |
Comments |
Comment by Michael Chan [ 21/Jul/09 ] |
Suggested fix: Replace: return other.constant.equals(this.constant); with: if (other.constant == null) { return this.constant == null; }else { return other.constant.equals(this.constant); } |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
fix in 3.2 branch |
[ESPER-373] NPE in output rate limiting using SODA Created: 18/Jul/09 Updated: 03/Sep/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-373.diff TestOutputLimitClause.java |
Number of attachments : | 2 |
Description |
I was trying to control a EPL programatically and set an output clause like this "output every 1 sec". The documentation of version 3.0.0 and 3.0.1 leads to a old way of doing this (item 9.9.4): I guess this should be changed. Then I tried again using java doc. This sample code illustrates how I did it: EPStatementObjectModel obj = getAdmin().compileEPL(query); This code results in a nullpointer exception: 12:34:07,894 WARN [org.springframework.remoting.support.RemoteInvocationTraceInterceptor] Processing of JmsInvokerServiceExporter remote call resulted in fatal exception: net.intelie.holmes.core.client.CoreFacade.checkQuery java.lang.NullPointerException The reason was that a have chosen a TIME_PERIOD unit and did not set a TimePeriodExpression. Then I got a nullpointer, when I try to generate a string from the TimePeriodExpression (line 361) .I guess that this should be more safely threated at OutputLimitClause, checking also if TimePeriodExpression is not null. I have managed to get the code running using: |
Comments |
Comment by Ricardo Clemente [ 23/Jul/09 ] |
A patch for the documentation and the class OutputLimitClause. A unit test for the modifications. |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
fix in 3.2 branch |
[ESPER-372] Enhance ourput rate limiting to allow discard of events until time period passed Created: 15/Jul/09 Updated: 03/Sep/09 Resolved: 08/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In order to get consistent results for a complete 60 second window is it select instrumentId, sum(tradeSize) as value, 'volume.60' as type |
Comments |
Comment by Thomas Bernhardt [ 08/Aug/09 ] |
in 3.2 branch |
[ESPER-371] Using Esper 3.1.1, a POJO type of float isn't supported in the statements Created: 08/Jul/09 Updated: 03/Sep/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | Brett Miller | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | RelationalOpEnum.java |
Number of attachments : | 1 |
Description |
My POJO object uses types of 'float' but I'm getting the following error: Unsupported type for relational op compare, type class java.lang.Float Occurring at com.espertech.esper.type.RelationalOpEnum.getComputer(RelationalOpEnum.java:126) Upon examination of the code, com.espertech.esper.type.RelationalOpEnum.getComputer Does not support a type of Float. Here is my statement: I used a type 'float' instead of type 'double' for all of my floating point values. Here is the stack (excluding my classes) Brett |
Comments |
Comment by Brett Miller [ 08/Jul/09 ] |
Here is the change that I made to support a type of 'float' in the statements. |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
fix in 3.2 branch |
[ESPER-370] Exception compiling pattern with repeat operator and filter using repeated property within the repeat operator itself Created: 08/Jul/09 Updated: 03/Sep/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
ok, so when I have the following query "select a from pattern [ every |
Comments |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
fix in 3.2 branch |
[ESPER-369] Using User Defined function in where clause Created: 08/Jul/09 Updated: 06/Aug/09 Resolved: 06/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Test | Priority: | Major |
Reporter: | shreekanth vankamamidi | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
windows Vista, JDK 1.5.0 |
Number of attachments : | 0 |
Description |
Hi All, I was trying to invoke a User defined java function from EPL query, but it doesn't work, it simply ignores but where as if it is in select columns it works... sample: User Defined Method: FinanceUtils.getBasic(int salary) Select FinanceUtils.getBasic(a.salary) from EmployeeEvent a ===> this works but Select * from EmployeeEvent a where FinanceUtils.getBasic(a.salary) > 3000 ===> this doesnot works This is just a sample, actual requirement is more complex.. so can anyone please let me know if it is a limitation or i am doing any thing wrong Regards, |
Comments |
Comment by Thomas Bernhardt [ 08/Jul/09 ] |
Cannot reproduce, please attache a small test class. |
[ESPER-368] XML schema property plus XPath with the same property name produce incorrect result if schema and XPath typing don't match Created: 03/Jul/09 Updated: 03/Sep/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Assume a schema that has xs:all: <xs:element name="event-page-visit"> Assume a event definition that is: Assume a over-simplfied pattern such as: The "url" property matches the event but fails to output in the select clause, as its treated as a fragment, ie. a XML backed type by itself. |
Comments |
Comment by Thomas Bernhardt [ 03/Jul/09 ] |
workarounds: remove xs:all |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
fix in 3.2 branch |
[ESPER-367] OutOfMemory issue Created: 26/Jun/09 Updated: 03/Sep/09 Resolved: 01/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Ravi Peddinti | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
VM: 64bit SUN JDK1.6 on windows 2003 on 16 (Intel Xeon 2.40Gz) CPU server |
Attachments: | TestMemoryUsage.java |
Number of attachments : | 1 |
Description |
We are evaluating an Esper based application with Esper in embedded mode. Our application reads messages sent through a socket and converts them into hashmap and sends the data to Esper. We currently are running one EPL in esper engine. But it consumes all the memory and throws an OutOfMemoryException after some time. The query and other details are down below. This problem is recreatable with a test program. Garbage collector fails to reclaim all unused the heap, and eventually after some time the JVM goes out of memory. We are including the test program, which is similar in query and data feed. Query: Event Type (TLHitEvent): MAP Event Fields: Data details: VM: 64bit SUN JDK1.6 on windows 2003 on 16 CPU server JVM parameter tried (various combinations): Listeners: tried with and without listeners Esper Version: tried both 3.0.0 and 3.1.0 |
Comments |
Comment by Ravi Peddinti [ 29/Jun/09 ] |
It seems order by clause is causing the problem. Without it memory usage is very less and NOT increasing gradually till it goes out of memory. |
Comment by Thomas Bernhardt [ 31/Aug/09 ] |
The ReportTime property in the group-by clause is a timestamp value, thereby creating an unlimited number of groups. We will make a change for version 3.2 to handle unlimited number of groups correctly for group-by in combination with a data window, and document unbound stream cases and output all/last cases that may still present a problem as timestamps as group criteria can create unlimited state without the engine being able to tell apart. |
Comment by Thomas Bernhardt [ 01/Sep/09 ] |
change in 3.2 branch |
[ESPER-366] Missing export of package com.espertech.esper.event.property Created: 18/Jun/09 Updated: 03/Sep/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Jochen Mader | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The OSGi-export in esper-3.1.0.jar doesn't contain com.espertech.esper.event.property. |
Comments |
Comment by Thomas Bernhardt [ 22/Jun/09 ] |
The OSGi Manifest of esper 3.1.0 has com.espertech.esper.event.property While working the esper jar into our build process I found a couple of |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
in 3.2 branch |
[ESPER-365] import EPL built in annotation by default Created: 17/Jun/09 Updated: 04/Sep/09 Resolved: 04/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | 3.2 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
@Name("first statement") insert into CountS select count(*) as cnt, id from MyEvent.win:keepall() requires explicit import I think those should not require an explicit import otherwise fails with |
Comments |
Comment by Thomas Bernhardt [ 31/Jul/09 ] |
I think by default they don't require an import. |
Comment by Alexandre Vasseur [ 04/Sep/09 ] |
Please refine behavior It is very common that one may add its own import. I think by default they should always be auto imported as first or last priority. |
Comment by Thomas Bernhardt [ 04/Sep/09 ] |
The change is in 3.2 release. |
Comment by Alexandre Vasseur [ 04/Sep/09 ] |
It seems the behavior is:
The following will find user' @Name but will fail to find default @Description I would like the following behavior:
|
Comment by Thomas Bernhardt [ 04/Sep/09 ] |
For release 3.2, the default client annotation package remains there even after static configuration of additional imports. For other packages (Math) the default behavior is to clear imports when the first user import is added, so as to allow the override order. Dynamic import add is still an add. |
[ESPER-364] [PATCH] XMPP input adapter Created: 17/Jun/09 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Major |
Reporter: | G2P | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | 0001-Add-a-pubsub-connector-implemented-with-su-smack.patch 0002-PubSubBridge-is-now-also-an-OutputAdapter.patch 0003-Serialize-events-as-XML.patch 0004-More-queries.patch |
Patch Submitted: |
Yes
|
Number of attachments : | 4 |
Description |
I've added an XMPP PubSub esperio input adapter based on smack and su-smack. Here is a patch, I'll do more iterations given feedback. It includes a main method that runs the code. That method assumes a local jabber server where the correct account exists; I'm not sure how to improve testability. |
Comments |
Comment by G2P [ 09/Sep/09 ] |
OutputAdapter support |
Comment by G2P [ 09/Sep/09 ] |
XML serialisation support. |
Comment by G2P [ 09/Sep/09 ] |
Demo comments and extra queries. |
Comment by G2P [ 09/Sep/09 ] |
I'm not planning to work on this anymore, but I had written a working output adapter as well. Everything is attached, although the schema must be changed for testing. |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
Will document as solution pattern. |
Comment by G2P [ 17/Sep/09 ] |
Go ahead. |
[ESPER-363] support limit clause for on select Created: 16/Jun/09 Updated: 03/Sep/09 Resolved: 03/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | 3.2 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The on...select ... should support the limit clause on DeliveryRequest It sounds rather trivial to bring the change in the EPL grammar The following fails: create window GPSLocationW.std:unique(driver) as select * from GPSLocation insert into GPSLocationW select * from GPSLocation select d.* from on DeliveryRequest 18:21:52,828 DEBUG [ParseHelper] Error parsing statement [on DeliveryRequest insert into Stuff select * from GPSLocationW limit 1 ] |
[ESPER-362] error "Iteration over a unidirectional join is not supported" at statement start in a stream to window join Created: 16/Jun/09 Updated: 03/Sep/09 Resolved: 03/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | 3.2 |
Type: | Bug | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When registering a statement that does a stream to named window join, using the stream as unidirectional join, it fails with despite this is not an iteration Are there any side effects with such a fix, or good reason for the error ? create window GPSLocationW.std:unique(driver) as select * from GPSLocation insert into GPSLocationW select * from GPSLocation select d.* from |
[ESPER-361] win:time().std:firstunique() is not behaving as expected Created: 09/Jun/09 Updated: 11/Jun/09 Resolved: 11/Jun/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | ARajeshBabu | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Ubuntu8.04,java 1.5 |
Attachments: | OrderEvent.java Test.zip |
Number of attachments : | 2 |
Description |
there is a behavioral difference in specifying an expiry policy for the std.firstunique() window from esper2.3 |
Comments |
Comment by Alexandre Vasseur [ 09/Jun/09 ] |
Please provide more information - for example exact EPL statement and sample input events |
Comment by ARajeshBabu [ 10/Jun/09 ] |
EPL Statement - "INSERT INTO OE_UNQ select * from OrderEvent.win:time(10 sec).std:firstunique(itemName) retain-intersection" and pls find the attached OrderEvent.java file |
Comment by ARajeshBabu [ 10/Jun/09 ] |
OrderEvent.java file |
Comment by Thomas Bernhardt [ 10/Jun/09 ] |
Between major releases, i.e. 2.x to 3.x, please review migration instructions at We keep the behavior of all statements as constant as we can between major releases, however for version 3 the behavior when using multiple data windows has changed (to become more consistent) and we have reviewed this change with users through all communication channels. |
Comment by ARajeshBabu [ 11/Jun/09 ] |
Even i tried with std:firstunique().win:time() but the output is not as expected as with 2.3 |
Comment by Thomas Bernhardt [ 11/Jun/09 ] |
There is a flag in the configuration that enables backward-compatibilty for multiple staggered data windows. I'd recommend to review whether union or intersection semantics are expected before using the flag. |
Comment by ARajeshBabu [ 11/Jun/09 ] |
Pls check the attached zip which contains sample code and see the difference in the output of the two but putting the respective jars in the classpath |
Comment by Thomas Bernhardt [ 11/Jun/09 ] |
Your 3.1 code still have the retain-intersection keyword. |
[ESPER-360] Esper's Maven 2 artifacts are not correctly uploaded as a result its dependencies do not get picked up during runtime. Created: 08/Jun/09 Updated: 17/Jun/09 Resolved: 17/Jun/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | anshul | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
N/A |
Number of attachments : | 0 |
Description |
Esper's 3.1.0 artifacts are not uploaded correctly to the maven repository The issues are
As a result during a maven build, we get checksum failures when downloading the artifacts. And we get failures as the antlr classes are not added to the classpath because the pom file does not get downloaded. Having esper artifacts correctly uploaded will greatly enhance our ability to use it. The upload of artifacts for 3.0.0 is a good point of reference on what's needed for the 3.1.0 artifacts. |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/09 ] |
Fixed, version 3.0 was fine but 3.1 was not. |
Comment by anshul [ 15/Jun/09 ] |
The pom file is now correctly named and has the signature files but the esper-3.1.0.jar file does not have a corresponding signature file. Moreover, the maven-metadata.xml file only refers to 3.1.0 version. It does not refer to the older versions. This does not negatively impact us as we depend on 3.1.0 version but it might impact others who depend on older versions. Do you folks use the maven deploy plugin to deploy these artfiacts. |
Comment by Thomas Bernhardt [ 17/Jun/09 ] |
fixed, next time we'll give the Maven deploy a try again but last release it woudn't work |
[ESPER-359] addStatement with replay from namedwindow(s) Created: 05/Jun/09 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 3.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When using statement add/remove at runtime, that could be nice to be able to replay a named window (or more than one) so as to initialize the statement (different from a addlistener with replay) Here is a use case: It would be a great feature to have a As extra requirements to discuss:
|
Comments |
Comment by Thomas Bernhardt [ 03/Sep/09 ] |
Use isolation service provider in 3.2 |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
[ESPER-358] UDF - support arrays of primitives Created: 05/Jun/09 Updated: 04/Sep/09 Resolved: 04/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | Esper358.java |
Number of attachments : | 1 |
Description |
UDF don't support arrays of primitive(or boxed) types - the method resolver fails to look up those. ) UDF: Geo.inside(double lat, double lng, double[ ] polygonLatLng) A workarond for now is to use a String argument and do a string split and parse in the UDF |
Comments |
Comment by Thomas Bernhardt [ 03/Sep/09 ] |
{1,2,3,4}
has the type "Integer[]" and not the type "int[]"as EPL allows null values. |
Comment by Alexandre Vasseur [ 04/Sep/09 ] |
please look attached test case |
Comment by Alexandre Vasseur [ 04/Sep/09 ] |
see attached |
Comment by Thomas Bernhardt [ 04/Sep/09 ] |
In the statement "select TestStaticFunctions.udfInteger(integers) from Ev" Also in "select Esper358.udfInteger(ints) from Ev" an "int[]" is passed to a method accepting "Integer[]", we don't to auto-boxing for arrays sticking with Java conventions. |
Comment by Alexandre Vasseur [ 04/Sep/09 ] |
my mistake - test case was broken.
|
[ESPER-357] Univariate statistics derived properties refers to stdev and stdevpa Created: 02/Jun/09 Updated: 03/Sep/09 Resolved: 07/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.2, 2.3, 3.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
esper_reference.pdf refers to stdev and stdevpa (which I dont think they have been since beta) throughout instead of stddev and stddevpa. I think the html is the same. |
Comments |
Comment by Thomas Bernhardt [ 07/Aug/09 ] |
fix in 3.2 branch |
[ESPER-356] Round-off artifacts in time:win output with 'avg' aggregation Created: 27/May/09 Updated: 03/Sep/09 Resolved: 31/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Jason Rosenberg | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-roundoff-big-decimal-test-case.tar.gz esper-roundoff-test-case.tar.gz |
Number of attachments : | 2 |
Description |
I've attached a simple test-case to reproduce this issue. As far as I know this issue has been with us since Esper 2.0 at least, and is currently still happening in 3.1.0. Using a time:win sliding window, and using an avg() aggregation function, residual values tend to remain in the output long after all non-zero inputs have left the time window. The attached test-case reproduces the case I am seeing. We have an input stream that generally has all 0's, except every once in a while there is a blip of 2 or 3 non-zero events....Everything works as expected, until the blip passes out of the time window, and the input returns to all zeroes. At that point the output gets stuck at very small but non-zero values, e.g. 1x10^-18, etc.... I expect this is due to rounding, perhaps the avg aggregation is only updating the previous residual value each time a value enters or leaves the window, instead of doing a full average calculation with all the values remaining in the window....If so, this optimization is producing incorrect results, in this case..... Jason |
Comments |
Comment by Alexandre Vasseur [ 02/Jun/09 ] |
Esper' avg() is generating double precisions numbers and as per IEEE standards Tom quoted, and double are internally represented as binary fractions which can lead to loss of precision. This is unrelated to how Esper works. For example the following will fail (same input data as your test case) while you seem to assume it should end up with sum == 0 for(double sample:samples) { sum -= sample; } assertEquals(0, sum);//will fail You may read more about this in this thread for example If you do want to deal with BigDecimal - you should likely consider writing a custom aggregator using BigDecimal.add/substract, following the com.espertech.esper.epl.aggAvgAggregator source. |
Comment by Jason Rosenberg [ 02/Jun/09 ] |
Actually no.... If all values in 'samples' are 0.0, then your test code works fine. If you add 10 0.0's, and then subtract 10 0.0's, you get 0.0. My test-case clearly shows, that if you start off with all 0's, it works fine, then after intervening non-zeroes, followed by a return to all 0's, it never recovers, and permanently shows a residual history. I probably mis-named this issue, because it's not really a round-off error in calculating the average per se, it's a problem with the residual after previous activity calculation. The problem (and I think it's significant), is the that the time:win is allowing history no longer present in the window to influence the output. This is certainly against any SQL-like semantics. The problem really is that there's an optimization, which is not valid in this case, to keep a moving residual rather than the correct calculation over the actual values currently in the window. Probably a simple improvement, would be to track also the min and max in the window, and if the avg is ever greater than the max or less than min, as occurs in this case, then force the value to the min or max....Since the min/max is apparently easier to track accurately. Using BigDecimal in no way solves this issue. It only makes the residual smaller (e.g. 10^-54 instead of 10^-18). I did try it for fun.... Jason |
Comment by Jason Rosenberg [ 30/Jun/09 ] |
Added a test case which uses BigDecimal everywhere instead of double.... This time, it gets a runtime exception (perhaps this is actually a different issue, seems the ArithmeticException should be handled in this case): java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. |
Comment by Thomas Bernhardt [ 31/Aug/09 ] |
Recomputing a new aggregation value based on all datapoints in a data window every time a data point enters and leaves a data window does not seem a good suggestion, Jason. One workaround is to use a round function in the select clause to round to the desired precision. A second workaround is to use on-select and named window. IEEE double precision or BigDecimal precision are the same for any SQL-based database and its Java API. |
[ESPER-355] Maven2 metadata not updated Created: 26/May/09 Updated: 04/Jun/09 Resolved: 04/Jun/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.1 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The Maven central repository doesn't have the correct Maven2 Metadata information. See http://mirrors.ibiblio.org/pub/mirrors/maven2/com/espertech/esper/maven-metadata.xml. This causes the dependencies to not be picked up correctly. |
Comments |
Comment by Thomas Bernhardt [ 04/Jun/09 ] |
Updated on Codehaus repo, should synchronize to the link |
[ESPER-354] Upgrade to Antlr 3.1.3 Created: 26/May/09 Updated: 26/Sep/10 Resolved: 01/Sep/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 4.0 - requires JDK6 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | Improvement | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
See http://www.antlr.org/wiki/display/ANTLR3/ANTLR+3.1.2+Release+Notes and http://www.antlr.org/wiki/display/ANTLR3/ANTLR+3.1.3+Release+Notes |
Comments |
Comment by Thomas Bernhardt [ 23/Nov/09 ] |
This will skip release 3.3 and go into release 4.0 as it updates a dependent jar file. |
Comment by Thomas Bernhardt [ 01/Sep/10 ] |
Release 4.0 will use latest ANTLR 3.2 |
[ESPER-353] Detecting absence of event Created: 24/Apr/09 Updated: 25/Apr/09 Resolved: 25/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | saravanan | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP |
Number of attachments : | 0 |
Description |
I used the below statement to find the absence of "Terminal" event. But even when after sending the Terminal event, update method of listener is invoked. select 'terminal 1 is offline' from pattern Code Snippet:- Configuration config = new Configuration(); // Get an engine instance EPStatement statement = null; statement = esperEngine.getEPAdministrator().createEPL(stmt); }); Terminal lTerminal = new Terminal() ; try { Thread.sleep(15000) ; }catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } |
Comments |
Comment by Thomas Bernhardt [ 25/Apr/09 ] |
The pattern: ...waits for 2 seconds, then waits for 5 seconds and detects the absence of a Terminal event during the last 5 seconds. Your example sends the TerminalEvent at 0 (zero) seconds, therefore it will be ignored as the initial 2 seconds haven't passed. |
[ESPER-352] "default" named engine and unamed engine should be same Created: 21/Apr/09 Updated: 11/May/09 Resolved: 11/May/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EPServiceProviderManager.getDefaultEPServiceProvider() should return the same engine, having "default" beeing the default unnamed engine reserved name. |
Comments |
Comment by Alexandre Vasseur [ 11/May/09 ] |
fix in 3.1 |
[ESPER-351] Possible memory leak in Esper GroupBy view Created: 20/Apr/09 Updated: 24/Apr/09 Resolved: 24/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Performance |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | toli kuznets | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | Picture 2.png TestMemoryLeak.java |
Testcase included: | yes |
Number of attachments : | 2 |
Description |
There seems to be a situation where a simple "group by" query results in an OutOfMemory exception. if you put a basic select * from trade.std:groupby(symbol).win:length(1) query in, and send 1 million events in, the Esper engine runs out of memory. Here's the example of the unit test (also attached) public void testMemoryLeak() throws Exception { Configuration config = SupportConfigFactory.getConfiguration(); config.addEventType("trade", SupportMarketDataBean.class.getName()); EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); epService.initialize(); String stmtStr = "select * from trade.std:groupby(symbol).win:length(1)"; epService.getEPAdministrator().createEPL(stmtStr); for (int i = 0; i < 1000000; i++) { epService.getEPRuntime().sendEvent(new SupportMarketDataBean("IBM_" + i, 10.23, (long) i, "feed")); } } It could be that we are not using the query in an efficient manner, but my expectation would be that Esper should be able to handle this. |
Comments |
Comment by Thomas Bernhardt [ 21/Apr/09 ] |
It appears that the code above creates an unlimited (1M) number of groups and one data window per group....is that intended? |
Comment by toli kuznets [ 22/Apr/09 ] |
Thomas, I'll work on reproducing this again with a better example that shows our use case and follow up. |
Comment by toli kuznets [ 24/Apr/09 ] |
I can't seem to reproduce this behaviour anymore - so this is likely a user error. |
[ESPER-350] Timer-Within should evaluate to permanently false allowing every to restart the expression Created: 17/Apr/09 Updated: 16/May/09 Resolved: 17/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In the expression: When no B event arrives after an A event, its desirable the "every" restarts the subexpression looking for the next A followed by B within 5 sec. |
Comments |
Comment by Thomas Bernhardt [ 17/Apr/09 ] |
in release 3.1 |
[ESPER-349] Exception barrier to lock taken missing from filter processing potentially causing deadlock after an exception occurs Created: 16/Apr/09 Updated: 16/May/09 Resolved: 17/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
[ESPER-348] XML event type fails to be configured with XSD on Java 6 Created: 10/Apr/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
User reported the following works with java 1.5_18 but fails with java 6 Stack trace: My schema.xsd: Source code: import java.net.URL; import org.apache.commons.logging.Log; import com.espertech.esper.client.Configuration; public class TestEsperXML { public void run() { Configuration configuration = new Configuration(); URL schemaURL = this.getClass().getClassLoader().getResource("schema.xsd"); ConfigurationEventTypeXMLDOM cfgV = new ConfigurationEventTypeXMLDOM(); cfgV.setRootElementName("test"); cfgV.setSchemaResource(schemaURL.toString()); configuration.addEventType("TestEvent", cfgV); EPServiceProvider epService = EPServiceProviderManager.getProvider("TestEsperXML", configuration); // <== Exception here! log.debug("Success!"); }public static void main(String[] args) { TestEsperXML tester = new TestEsperXML(); tester.run(); }} I'm useing Eclipse 3.4.2, M20090211-1700 on Windows XP SP3 |
Comments |
Comment by Alexandre Vasseur [ 10/Apr/09 ] |
I can confirm the issue, also works for java 1.5_11 Seems that a change was done in Cannot find reference of Java 5 bug in Sun bug database This creates incompatibility for Esper 3 to run equally on Java 5 and Java 6 |
Comment by Alexandre Vasseur [ 10/Apr/09 ] |
workaround for Java 6 users: recompile Esper from source with Java 6 for a Java 6 target JVM Note to dev: requires global check to see if there are other places where similar failure could happen |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
Proposed fix is: private static final int JAVA5_COMPLEX_TYPE = 13; private static boolean isComplexTypeCategory(short typeCategory) { return (typeCategory == XSTypeDefinition.COMPLEX_TYPE) || (typeCategory == JAVA5_COMPLEX_TYPE) || (typeCategory == JAVA6_COMPLEX_TYPE); }private static boolean isSimpleTypeCategory(short typeCategory) { return (typeCategory == XSTypeDefinition.SIMPLE_TYPE) || (typeCategory == JAVA5_SIMPLE_TYPE) || (typeCategory == JAVA6_SIMPLE_TYPE); } |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in release 3.1 |
[ESPER-347] NullPointer with time_batch and START_EAGER with named window Created: 01/Apr/09 Updated: 16/May/09 Resolved: 14/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Here you go: java.lang.NullPointerException |
[ESPER-346] NullPointerException in on-select with aggregation and empty window Created: 01/Apr/09 Updated: 16/May/09 Resolved: 14/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Doing the following causes a NullPointer exception if the window I am on pattern[timer:interval(2000 msec)] Stacktrace: |
Comments |
Comment by Thomas Bernhardt [ 14/Apr/09 ] |
Failed to reproduce. |
[ESPER-345] NPE is thrown when evaluating statement with 'OR' in its having-clause. Created: 31/Mar/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | Alexander Friese | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-stack.txt |
Number of attachments : | 1 |
Description |
It seems that there is a null-check missing in the evaluate method in ExprOrNode. This causes the statement to throw a NPE (see attached file for details) as soon as no more events arrive: If I use AND instead of OR, there is no NPE thrown. The ExprAndNode class has such a null check in its evaluate method. |
Comments |
Comment by Thomas Bernhardt [ 13/Apr/09 ] |
Assigned to 3.1 |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in release 3.1 |
[ESPER-344] Pattern cleanup incomplete causing memory leaks Created: 31/Mar/09 Updated: 16/May/09 Resolved: 17/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | Esper344.java |
Number of attachments : | 1 |
Description |
user reports... I think I have found and corrected two sorts of serious memory leaks I believe there are two problems in the 3.0.0 release. The first is related guard = null; to the end of guardQuit() in EvalGuardStateNode, and of quitable = null; to the end of scheduledTrigger(ExtensionServicesContext) in The second problem is that when a timer expires, the parent of this.getParentEvaluator().evaluateFalse(this); to the end of guardQuit() in EvalGuardStateNode. I have also added for( int i=0; i<handles.getArray().length; i++ ) in the "finally" block of processSchedule() of EPRuntimeImpl before the lock With these corrections, my tests run fine and the memory leaks are gone. |
Comments |
Comment by Thomas Bernhardt [ 31/Mar/09 ] |
Needs to be confirmed |
Comment by Alexandre Vasseur [ 07/Apr/09 ] |
test case On hotspot, use visualvm to check heap and do heap dumps |
Comment by Alexandre Vasseur [ 07/Apr/09 ] |
confirmed I believe only what is described as "the second problem" is required to be fixed. |
Comment by Thomas Bernhardt [ 17/Apr/09 ] |
Change to evaluateFalse is good and will be in release 3.1. |
[ESPER-343] Esper shouldn't log ExprValidationException Created: 25/Mar/09 Updated: 16/May/09 Resolved: 17/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In StatementLifecycleSvcImpl on line 798, ExprValidationException is logged. While I'm not against logging, the exception is converted into a EPStatementException and thrown so upper layers can catch/log it. |
[ESPER-342] TimeSourceService is an implementation, make it an interface Created: 23/Mar/09 Updated: 16/May/09 Resolved: 14/May/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'm trying to extend TimeSourceService to have it return millis in a specific time zone. This seems not possible since TimeSourceService is an implementation. |
[ESPER-341] Variable used with XML no-schema event in same statement creates ambigous property exception Created: 19/Mar/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a variable is resolved by the engine in the same statement as a XML-representation event type that is not backed by a schema, the variable name is always ambiguous. This only affects all XML event types that are no backed by a schema, since such event type allows undefined properties to exist. The error output is |
Comments |
Comment by Thomas Bernhardt [ 30/Mar/09 ] |
Workaround is to assign a schema. Assigned to 3.1 release |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in rel 3.1 |
[ESPER-340] Lost of precision using BigDecimal for arithematic operation Created: 11/Mar/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Minor |
Reporter: | gobreak | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The "avgRate" of the following statement outputs a result of "Double" type which may cause the lost of precision as all the operants are "BigDecimal"s. "select accountId, instrumentDisplayCode , sum(amount) as sumAmount, (sum(rate * amount)/sum(amount)) as avgRate, max(lastUpdateTime) as lastUpdateTime from TradeTxnEvent group by accountId, instrumentDisplayCode " TradeTxnEvent .class: private Long tradeId; private String accountId; private String instrumentDisplayCode; private BigDecimal rate; private BigDecimal amount; private TradeSide tradeSide; private Date lastUpdateTime; public String getAccountId() { return accountId; }public void setAccountId(String accountId) { this.accountId = accountId; }public BigDecimal getAmount() { return amount; }public void setAmount(BigDecimal amount) { this.amount = amount; }public String getInstrumentDisplayCode() { return instrumentDisplayCode; }public void setInstrumentDisplayCode(String instrumentDisplayCode) { this.instrumentDisplayCode = instrumentDisplayCode; }public Date getLastUpdateTime() { return lastUpdateTime; }public void setLastUpdateTime(Date lastUpdateTime) { this.lastUpdateTime = lastUpdateTime; }public BigDecimal getRate() { return rate; }public void setRate(BigDecimal rate) { this.rate = rate; }public Long getTradeId() { return tradeId; }public void setTradeId(Long tradeId) { this.tradeId = tradeId; }public TradeSide getTradeSide() { return tradeSide; }public void setTradeSide(TradeSide tradeSide) { this.tradeSide = tradeSide; } public TradeTxnEvent() { public TradeTxnEvent(Long tradeId, String accountId, String instrumentDisplayCode, BigDecimal rate, BigDecimal amount, TradeSide tradeSide, Date lastUpdateTime) { this.tradeId = tradeId; this.accountId = accountId; this.instrumentDisplayCode = instrumentDisplayCode; this.rate = rate; this.amount = amount; this.tradeSide = tradeSide; this.lastUpdateTime = lastUpdateTime; }} |
Comments |
Comment by Thomas Bernhardt [ 30/Mar/09 ] |
Assigned to 3.1 release |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in release 3.1 |
[ESPER-339] Parse error when using "every" in combination with repeat Created: 10/Mar/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The simple pattern every [5] Random doesn't work: Incorrect syntax near '[' at line 1 column 6, please check the pattern expression [every [5] Random]. |
Comments |
Comment by Thomas Bernhardt [ 31/Mar/09 ] |
Workaround is |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in rel 3.1 |
[ESPER-338] .NET Nesper: client/IntializerTransform.xlst missing from Nesper 2.1 zip file, Nesper.csproj will not build as a result. Created: 09/Mar/09 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 2.1 |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Major |
Reporter: | George M Coles | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
windows? |
Attachments: | InitializerTransform.xslt |
Number of attachments : | 1 |
Description |
I try to build the project and get the following error Error 91 Unable to copy file "client\InitializerTransform.xslt" to "obj\Release\com.espertech.esper.client.InitializerTransform.xslt". Could not find file 'client\InitializerTransform.xslt'. |
Comments |
Comment by Charles Openshaw [ 30/Jul/09 ] |
I've attached the a copy of the file for those wanting to build the project. You need to save it to the following directory: \NEsper-2.1\src\NEsper\client |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
NEsper release 3.0 and 3.1 fix this issue. |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
[ESPER-337] .NET Nesper Binary distribution of com.espertech.esper.client.Configuration does not expose AddPlugInView publicly, source distribution does. Created: 09/Mar/09 Updated: 05/Aug/10 Resolved: 05/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 5.0 |
Fix Version/s: | 3.4 |
Type: | Improvement | Priority: | Minor |
Reporter: | George M Coles | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
all |
Number of attachments : | 0 |
Description |
I wrote a custom view and realize that I cannot configure it using the Config api. I am using the 2.1 binary distribution of Nesper which seems to be out of sync with the src of 2.1 version of Nesper. It would be convenient for me to be able to use the binary, and not have to build this from source. |
[ESPER-336] pluginloader stop not properly called - issue with EPserviceProviderManager.getProvider("existing") Created: 09/Mar/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | A20090304.java |
Number of attachments : | 1 |
Description |
Pluginloader.stop relies on configSnapshot. Assume the stop sequence is: Problem is that the getProvider(someKnownUri) does as follow: The question comes down to if someone should rely on EPServiceProviderManager.getProvider(someKnownUri) to grab back an existing already configured engine. // EPServiceProviderManager call public static EPServiceProvider getProvider(String providerURI, Configuration configuration) throws ConfigurationException else { provider.setConfiguration(configuration); //////***** Why that? } return provider; |
Comments |
Comment by Alexandre Vasseur [ 12/Mar/09 ] |
test case |
Comment by Alexandre Vasseur [ 12/Mar/09 ] |
must change EPServiceProviderImpl.destroy |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
The problem and suggested fix is correct. ep = EPServiceProviderManager.getProvider(EPServiceProviderSPI.DEFAULT_ENGINE_URI__QUALIFIER); The EPServiceProviderSPI.DEFAULT_ENGINE_URI__QUALIFIER value is for use in EPL, such as |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in rel 3.1 |
[ESPER-335] pluginloader stop called after engine runtime destroy Created: 09/Mar/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
PluginLoader.stop() are called after engine runtime.destroy() has been called. |
Comments |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
agree, in 3.1 branch |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in rel 3.1 |
[ESPER-334] PluginLoader reentrancy on Configuration Created: 05/Mar/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When using a plugin loader, the init() method is called while the engine is beeing configured. Workaround: schedule a timer in init() to perform post-configuration tasks. |
Comments |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in rel 3.1 |
[ESPER-333] Pattern followed-by expression to detect when no subexpressions are alive and indicate permanently false so "every" can restart Created: 02/Mar/09 Updated: 16/May/09 Resolved: 17/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A(a=1) A(a=0) A(a=2) B1 A(a=3) A(a=0) B2 A(a=4) A(a=5) B3 and { A4, B3 }selected. Suppose the following pattern: The followed-by expression does not automatically turn permanently false when A0 arrives, thereby "every" does not restart the expression. If a sub-expression to a followed-by expression turns permanently false then the whole followed-by expression is not necessarily permanently false, however in your case it is. For example, consider the pattern: In this pattern: Currently a followed-by does not turn permanently false since there can be subexpressions within the followed by that may still turn true. What we can do as an improvement is to automatically detect, in a follow-by, that all subexpressions ended and thus allow the followed-by to turn permanently false, allowing the "every" to restart. As a workaround, one could use the following pattern and simply in the listener take the first match only. |
Comments |
Comment by Thomas Bernhardt [ 17/Apr/09 ] |
in release 3.1 |
[ESPER-332] NullPointerException in on-select with having clause for timer excution Created: 26/Feb/09 Updated: 16/May/09 Resolved: 14/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hi, I have a problem with a statement. Fist I create a named window like this: create window MyWindow.win:keepall() as ID from EventStream Now I want to know, which ID's are in the window: on pattern [ every timer:interval(1 min)] select ID from MyWindow having count(ID) > 0 the problem is, that after a 1 minute after program start, esper logs permanently this nullpointerexception: [1] Thanks for help, [1] |
Comments |
Comment by Alexandre Vasseur [ 06/Mar/09 ] |
What is update listener code? select * from Foo output last every 10 seconds |
Comment by Thomas Bernhardt [ 30/Mar/09 ] |
Assigned to 3.1 release |
[ESPER-331] Runtime exception barrier for listener and subscriber Created: 20/Feb/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The listener and subscriber dispatches need an exception barrier that continues the dispatch and logs errors |
Comments |
Comment by Thomas Bernhardt [ 30/Mar/09 ] |
Assigned to 3.1 release |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in rel 3.1 |
[ESPER-330] Esper 3.0's pom-file could not be found in repo1.maven.org Created: 20/Feb/09 Updated: 16/May/09 Resolved: 21/Feb/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Robert Radkiewicz | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Maven |
Number of attachments : | 0 |
Description |
In http://repo1.maven.org/maven2/com/espertech/esper/3.0.0/ there is no file named "esper-3.0.0.pom", but a file "pom.xml". Maven can't find this file. So Esper itself is loaded, but the dependencies are not. |
Comments |
Comment by Alexandre Vasseur [ 21/Feb/09 ] |
We had an issue in our main repo that is now fixed. |
Comment by Alexandre Vasseur [ 21/Feb/09 ] |
if you want to use our repo: http://repository.codehaus.org/com/espertech/esper/ |
[ESPER-329] .NET Nesper : Use a standard version of log4net Created: 18/Feb/09 Updated: 03/Sep/09 Resolved: 24/Aug/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 2.1 |
Fix Version/s: | 3.0 |
Type: | Improvement | Priority: | Major |
Reporter: | elro | Assignee: | Aaron Jackson |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It seems that NEsper is using a "custom" version of log4net library. The log4net assembly from the NEsper distribution has the following properties:
The standard log4ent has the following properties:
In a project, if a third parties bind the standard log4net assembly, the NEsper can't bind the custom version. Thx |
Comments |
Comment by Aaron Jackson [ 24/Aug/09 ] |
NEsper 3 was released with a release version of the log4net binaries as shipped by the apache log4net team. |
[ESPER-328] Aggregation function nested created NPE in Timer thread Created: 17/Feb/09 Updated: 16/May/09 Resolved: 15/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Aaron Whiteside | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | L20090219.java |
Number of attachments : | 1 |
Description |
Simple single thread feeding events in... Single query select event\.failure\.exception as exception, avg(count) as average from MapMessage(type='FAILED').win:time(3600 seconds) group by event\.failure\.exception output every 10 seconds After the first 2-3 events are feed into the system, it goes into a tight loop printing this error over and over... 17/02/2009 18:28:28 ERROR run(EPLTimerTask.java:65) EPLTimerTask - Timer thread caught unhandled exception: null |
Comments |
Comment by Aaron Whiteside [ 17/Feb/09 ] |
seems the NPE is caused by the avg(count( * )) if I remove avg() I no longer receive the NPE Its either invalid syntax or a bug... either way probably shouldn't be getting the NPE. |
Comment by Alexandre Vasseur [ 19/Feb/09 ] |
select avg(count(*)) from .... the bug comes from the group by |
Comment by Aaron Whiteside [ 19/Feb/09 ] |
and the solution? |
Comment by Alexandre Vasseur [ 19/Feb/09 ] |
seems there is no workaround |
Comment by Alexandre Vasseur [ 19/Feb/09 ] |
test case |
Comment by Thomas Bernhardt [ 19/Feb/09 ] |
Nested aggregation functions are supported, big fix required |
Comment by Thomas Bernhardt [ 15/Apr/09 ] |
in release 3.1 |
[ESPER-327] Nullpointer when parsing statement Created: 16/Feb/09 Updated: 01/Apr/09 Resolved: 01/Apr/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Statement: select avg(feedTurbidity.value) as avgFeedTurbidity from FeedTurbidity.win:time(3 hours) as feedTurbidity where avgFeedTurbidity > 0.02 java.lang.NullPointerException |
Comments |
Comment by Mathias Bogaert [ 16/Feb/09 ] |
Doh. That statement above is wrong. The nullpointer belongs to the following statement: every event=GsmSignalQuality(value < 5) |
Comment by Alexandre Vasseur [ 19/Feb/09 ] |
cannot reproduce |
[ESPER-326] Prepared On-Demand Query on named window returns incorrect count(*) Created: 11/Feb/09 Updated: 11/Feb/09 Resolved: 11/Feb/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.0 |
Type: | Bug | Priority: | Major |
Reporter: | pccwhk | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Statement are as follows: // create and define named window // populate the event into named window Code using the On Demand Query: I created an order window to store all the orders received. Then I created an on-demand query to query the number of OrderEvent in the named window. The result is not correct. For example, when there is 2 order events. First call will return 2 correctly. However, when I call it again, it will become 4. The third time to call will return 6 and so on. The count will be keep increasing with the number of call ... |
Comments |
Comment by pccwhk [ 11/Feb/09 ] |
More Information: If I use On-Demand Query instead of the the prepared on Demand Query, I can get the correct number of count, no matter how many times I call the query. EventBean[] result = epService.getEPRuntime().executeQuery("select count as orderCount from OrderWindow").getArray(); |
Comment by Thomas Bernhardt [ 11/Feb/09 ] |
in release 3.0 |
[ESPER-325] Add EPStatement createPattern(String pattern, java.lang.Object userObject) Created: 10/Feb/09 Updated: 11/Feb/09 Resolved: 10/Feb/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.0 |
Type: | Wish | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Would be nice not to need to specify a name for the statement, just the pattern and userObject. |
[ESPER-324] EPServiceStateListener exposes EPServiceProviderImpl Created: 09/Feb/09 Updated: 11/Feb/09 Resolved: 09/Feb/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.0 |
Type: | Bug | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EPServiceProviderImpl is exposed in the interface EPServiceStateListener. |
[ESPER-323] Timer thread caught unhandled exception: null Created: 31/Jan/09 Updated: 11/Feb/09 Resolved: 09/Feb/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.0 |
Type: | Bug | Priority: | Major |
Reporter: | ARajeshBabu | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | 3 days | ||
Time Spent: | Not Specified | ||
Original Estimate: | 3 days | ||
Environment: |
Ubuntu and JDK 1.5.0 |
Attachments: | Error.log |
Number of attachments : | 1 |
Description |
009-01-25 23:42:02,104 - ERROR - EPLTimerTask.java::65 - Timer thread caught unhandled exception: null |
Comments |
Comment by ARajeshBabu [ 31/Jan/09 ] |
at 'if (index == (numChildNodes - 1))' of EvalFollowedByStateNode.evaluateTrue |
Comment by Thomas Bernhardt [ 31/Jan/09 ] |
Can you please provide the EPL statement and, if possible, a test case? |
Comment by Alexandre Vasseur [ 31/Jan/09 ] |
Are you using the entire service pack atop 2.3? |
Comment by ARajeshBabu [ 01/Feb/09 ] |
RP_UNQ --INSERT INTO RP_UNQ SELECT * FROM Event.win:time(30sec).std:firstunique(source_ip,source_name,eventCategory,eventGroupName,severity) RP_UNQ_TM --INSERT INTO RP_UNQ_TM SELECT * FROM Event.win:time(30 sec).std:firstunique EPL -Statement --SELECT * FROM pattern[ every ( ld = RP_UNQ_TM(eventCategory ='Fault',eventGroupName='LinkStatus',severity='Critical') ) |
Comment by ARajeshBabu [ 01/Feb/09 ] |
Alexandre:- No I haven't used any service pack on top of 2.3, can u tell me the usage |
Comment by Thomas Bernhardt [ 02/Feb/09 ] |
Can you please let us know the sequence of events that causes the problem, we have not been able to reproduce . The problem appears due to the pattern statement followed-by operator however there is no sequence of events known to produce the problem. Below is a reference method that can be used for testing, the statement was slightly simplified. public void testJIRA323() { Configuration config = new Configuration(); config.getEngineDefaults().getThreading().setInternalTimerEnabled(false); EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); epService.initialize(); epService.getEPAdministrator().getConfiguration().addEventType("SupportBean", SupportBean.class); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(0)); sendTimer(1000,epService); String stmt = "SELECT * FROM pattern[ every ( ld = SupportBean(string='S'))\n" + " -> (timer:interval(10 sec) or (eve1 = SupportBean(string='E1'))\n" + " -> (timer:interval(10 sec) or (eve2 = SupportBean(string='E2')) )) ]"; epService.getEPAdministrator().createEPL(stmt); epService.getEPRuntime().sendEvent(new SupportBean("S", 1)); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(5000)); epService.getEPRuntime().sendEvent(new SupportBean("E1", 2)); epService.getEPRuntime().sendEvent(new SupportBean("E2", 2)); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(11000)); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(15000)); } |
Comment by ARajeshBabu [ 02/Feb/09 ] |
even i tested with same kind of setup , with that it works pretty fine. At this point of time i will not be able to provide u with a test scenario as different threads will send events to the Engine |
Comment by ARajeshBabu [ 02/Feb/09 ] |
pls find the attached log |
Comment by Thomas Bernhardt [ 02/Feb/09 ] |
Great, thanks for the log, that really helped. |
[ESPER-322] Support for UDF chained invocation and nested/indexed/mapped property syntax Created: 15/Jan/09 Updated: 01/Oct/10 Resolved: 01/Oct/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 4.0 - requires JDK6 |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Example: public class Address { Now I can phrase a query like: "Select event.getBits(Address.makeAddress(10,15)) from MyEvent as event" which is what I wanted. Now what would be nice is if I could do something like this: Select event.getBits(Address.makeAddress(10,15)).someOtherBeanProperty from MyEvent as event |
Comments |
Comment by Thomas Bernhardt [ 31/Mar/09 ] |
(user reports) I would like to achieve is something like this: select * from MyEvent where (MyClass.MyFunction("MyVariable")[1] > 3.0) |
Comment by Thomas Bernhardt [ 31/Mar/09 ] |
Assigned to release 4 for priorization |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Released with version 4.0 |
[ESPER-321] stat:linest has more derived properties than what documented Created: 13/Jan/09 Updated: 11/Feb/09 Resolved: 29/Jan/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
stat:linest(...) gives me an output event as follow when I dump it using the event type reflection API and this is not what is documented. underlying = datapoints=2 sumX=210.0 sumXSq=22050.0 sumY=208.33333333333331 sumYSq=21702.777777777777 sumXY=21875.0 |
[ESPER-320] Pass explicit null value to user-defined function fails to start statement Created: 13/Jan/09 Updated: 11/Feb/09 Resolved: 13/Jan/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
is it possible to pass null value to user defined function (java) ? select Helper.staticMethod(field, 0, null, true) from SomeStream gives 2009-01-12 16:40:12,500 DEBUG [EventTF ] StatementLifecycleSvcImpl: ( com.espertech.esper.epl.expression.ExprValidationException at com.espertech.esper.epl.expression.ExprStaticMethodNode.validate( at com.espertech.esper.epl.expression.ExprNode.getValidatedSubtree( at com.espertech.esper.epl.core.ResultSetProcessorFactory.getProcessor( at com.espertech.esper.core.EPStatementStartMethod.startSelect( at com.espertech.esper.core.EPStatementStartMethod.start( at com.espertech.esper.core.StatementLifecycleSvcImpl.startInternal( at com.espertech.esper.core.StatementLifecycleSvcImpl.start( at com.espertech.esper.core.StatementLifecycleSvcImpl.createAndStart( at com.espertech.esper.core.StatementLifecycleSvcImpl.createAndStart( at com.espertech.esper.core.EPAdministratorImpl.create( at com.espertech.esper.core.EPAdministratorImpl.create( |
Comments |
Comment by Thomas Bernhardt [ 13/Jan/09 ] |
Will be in 3.0 release |
[ESPER-319] Allow subselects in the filter of a pattern Created: 12/Jan/09 Updated: 18/Dec/09 Resolved: 25/Nov/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 3.3 |
Type: | New Feature | Priority: | Minor |
Reporter: | Matthieu Labour | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It might be interesting to allow subselect in the filter of a pattern Example: select quote2 as quote from pattern [every (quote1=BarData(ticker='MSFT', time |
Comments |
Comment by Thomas Bernhardt [ 13/Jan/09 ] |
Workaround is to use a variable or put the subselect in the where-clause+insert-into. |
Comment by Thomas Bernhardt [ 31/Mar/09 ] |
Assigned to release 4 for prioritization |
Comment by Thomas Bernhardt [ 25/Nov/09 ] |
In release 3.3 |
[ESPER-318] Replace the term "alias" for event types with the term "name" Created: 07/Jan/09 Updated: 11/Feb/09 Resolved: 18/Jan/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core, Documentation |
Affects Version/s: | None |
Fix Version/s: | 3.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This is a minor change to public interfaces in a few places. It is therefore assigned to Esper 3.0. For example: |
[ESPER-317] current_timestamp does not behave properly when accessed from getter API Created: 05/Jan/09 Updated: 11/Feb/09 Resolved: 29/Jan/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.0 |
Type: | Bug | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
// works // fails (also fails with current_timestamp) It behave as if current_timestamp was an event property (thus handle thru lazy parsing in PropertyParser) and not the build-in function The exception is |
Comments |
Comment by Alexandre Vasseur [ 05/Jan/09 ] |
simple test case: modify JUnit TestTimestampExpr.java String stmtText = "select current_timestamp, current_timestamp as t0, " + assertEquals(Long.class, selectTestCase.getEventType().getPropertyType("current_timestamp")); |
Comment by Alexandre Vasseur [ 07/Jan/09 ] |
ExprTimeStampNode.toExpressionString always resolve to current_timestamp() which affects the ResultSetProcessorFactory test only fails with but works when "current_timestamp()" is used. |
Comment by Alexandre Vasseur [ 07/Jan/09 ] |
I would suggest to deprecate use of given that current_timestamp() is a built in function. The recommended way should be select current_timestamp() from Foo and select current_timestamp() as t0 from Foo rather than tracking all the way down if () was used or not. |
Comment by Thomas Bernhardt [ 29/Jan/09 ] |
Fixed; Property accessors were corrected as part of event type changes in 3.0 |
[ESPER-316] XML DOM-backed events transpose properties that are DOM-subtrees to a new stream Created: 17/Dec/08 Updated: 11/Feb/09 Resolved: 31/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Issue Links: |
|
||||||||
Number of attachments : | 0 |
Description |
I was wondering how to allowed EPL to access attributes on an XML message 1. An event alias is defined using the XML schema using 2. EPL statement inserts a portion of the events from the schema defined 3. An additional EPL statement queries attributes from objects in stream2 |
Comments |
Comment by Thomas Bernhardt [ 17/Dec/08 ] |
for XML DOM-backed events we do not have support in Esper 2.3 for transposing properties that represent DOM-subtrees to a new stream for schema-aware querying |
Comment by Alexandre Vasseur [ 17/Dec/08 ] |
relates to and Node does not get transposed |
[ESPER-315] Publish Esper sources Created: 17/Dec/08 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.3 |
Fix Version/s: | 2.3 |
Type: | Improvement | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
http://blogs.reucon.com/srt/2007/02/28/attach_sources_to_your_maven_artifacts.html <build> |
Comments |
Comment by Thomas Bernhardt [ 02/Jan/09 ] |
We will continue to publish source separate from the jar. |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
[ESPER-314] Esper XML represented events - need clarification Created: 16/Dec/08 Updated: 11/Feb/09 Resolved: 31/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 2.3, 3.0 |
Type: | Task | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | ESPER-314-esper-2.3.patch | ||||||||
Issue Links: |
|
||||||||
Number of attachments : | 1 |
Description |
Dealing with XML represented events needs more doc. Note 1
bug 1 bug 2 Note 2 |
Comments |
Comment by Alexandre Vasseur [ 16/Dec/08 ] |
Some improvement Should we support NODESET binding at all anyway? |
Comment by Alexandre Vasseur [ 16/Dec/08 ] |
updated report |
Comment by Alexandre Vasseur [ 16/Dec/08 ] |
Details on bug 1 ConfigurationEventTypeXMLDOM d = new ConfigurationEventTypeXMLDOM(); select book[0].id from Books schema is <?xml version="1.0" encoding="ISO-8859-1" ?> One single event is <books> |
Comment by Alexandre Vasseur [ 16/Dec/08 ] |
Details on bug 2 (same schema and event xml) ConfigurationEventTypeXMLDOM d = new ConfigurationEventTypeXMLDOM(); in listener code this will throw an NPE newEvents[0].getEventType().getPropertyNames() |
Comment by Thomas Bernhardt [ 19/Dec/08 ] |
I think we should go a step further in the next release and accomodate the EventPropertyGetter as we do for nestable maps and for Class.
|
Comment by Alexandre Vasseur [ 05/Jan/09 ] |
Patch for Esper 2.3 for bug1 (faulty xpath indexed when implicit xpath to EPL on indexed properties is used) and bug 2 (NPE on using event type API) |
Comment by Alexandre Vasseur [ 05/Jan/09 ] |
Here is a changelog of the provided patch
|
Comment by Alexandre Vasseur [ 05/Jan/09 ] |
changed fix version to 2.3 since patch is provided |
[ESPER-313] using last | snapshot in output...when statement causes parsing error Created: 11/Dec/08 Updated: 11/Feb/09 Resolved: 15/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Alex Lapins | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
JDK 1.6.0_10, running in JBoss 2.3 on Windows XP |
Attachments: | ESPER-313.patch |
Number of attachments : | 1 |
Description |
The following statement: where the streams are named windows produces an error. When you remove "last" from the ouput clause, it works fine (although, obviously not in the way I need it to). Same behavior occurs when I try to use "snapshot". It looks like if you manually specify the output type rather than using the default, it assumes that what is coming next is a time interval, not a when + expression. Here's the full error: This is a pretty big issue for us, since we're doing a high performance application, and the output gates communication to the client. We're not able to properly tune output performance unless we can rate limit using "last". |
Comments |
Comment by Alexandre Vasseur [ 12/Dec/08 ] |
Test case: public void testA() { Configuration configuration = new Configuration(); configuration.addEventTypeAlias("SupportBean", SupportBean.class); configuration.addVariable("vv", boolean.class, true); EPServiceProvider ep = EPServiceProviderManager.getDefaultProvider(configuration); EPStatement epStatement = null; //works epStatement = ep.getEPAdministrator().createEPL("select * from SupportBean.win:length(10) output when vv = true"); //fails epStatement = ep.getEPAdministrator().createEPL("select * from SupportBean.win:length(10) output all when vv = true"); }It happens that with output all, vv is considered to be an EVENT_PROP_EXPR |
Comment by Alexandre Vasseur [ 12/Dec/08 ] |
bug in ASTOutputLimitHelper to handle the tree when there is non default output control |
Comment by Alexandre Vasseur [ 12/Dec/08 ] |
proposed patch to properly handle Tom - I leave it up to you for validation and commit |
Comment by Thomas Bernhardt [ 15/Dec/08 ] |
Cumulative service pack is available that fixes the below issues. Download from http://dist.codehaus.org/esper/esper-2.3.0-JIRA313.jar Fixed issue |
[ESPER-312] NullPointerException in group-by query with only a count(*) in the having-clause and no other agg functions Created: 08/Dec/08 Updated: 11/Feb/09 Resolved: 15/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Affects a query that has a all of the following
For example: select * from SupportBean(intPrimitive = 3).win:time(10 sec) as e1 group by intPrimitive having count >= 5 >>>> select |
Comments |
Comment by Thomas Bernhardt [ 09/Dec/08 ] |
Workaround is to add count to the select-clause |
Comment by Thomas Bernhardt [ 15/Dec/08 ] |
Cumulative service pack is available that fixes the below issues. Download from http://dist.codehaus.org/esper/esper-2.3.0-JIRA313.jar Fixed issue |
[ESPER-311] Publish current statement results to listener upon listener-add and atomically Created: 06/Dec/08 Updated: 13/Feb/09 Resolved: 07/Jan/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
a feature that may be useful is to have the possibility to send a snapshot (last output of a statement) to a new listener added to an existing statement actually EPStatement st = adm.createEPL ("select a.* from A as a"); st.addListener(listener); epService.getEPRuntime().sendEvent(new EventA(),"A"); // listener will receive the event ... st.addListener(listener2); // listener2 may be interested in the last event from the statement st ========= hmm, if my understanding of iterators is correct, I need to write the code to iterate on st to get the last event before to create the second listener, create the second listener, feed it with this event, and then add it do a statement and I need to ensure I do this in a correct thread I think that quasi-standard feature of publish-subscribe systems where a new subscriber receives a snapshot on subscription is a better choice ========= I presume the idea is that the operation is atomic: at the time a listener is added it receives past results as well as new events, where in the new events include all events that occur after iterator results are delivered without loss? We could add a method such as "public void addListenerWithReplay(UpdateListener listener)" if there is a good use for this. Can you say whether you need atomicity? Can you please describe the use case? ============ an example from stock trading domain: statement computes some values that are based on the last price, statement is started at the opening of the market, results of this statement is used by a trading automaton, which is not started before the creation of the statement if the stock is not liquid (few transactions) automaton will not have information from the satement till the first transaction after the start occurs and will stay in invalid state (no price) |
Comments |
Comment by Thomas Bernhardt [ 06/Dec/08 ] |
Do we like the approach with a new method provided by EPStatement:
|
Comment by Thomas Bernhardt [ 07/Jan/09 ] |
In major300 branch for 3.0 release |
Comment by Mathias Bogaert [ 13/Feb/09 ] |
Could you also add addStatementAwareListenerWithReplay ? |
[ESPER-310] Safe iterator on unidirectional join not releasing lock Created: 05/Dec/08 Updated: 11/Feb/09 Resolved: 06/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Luca Papaleo | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
if you use safeIterator method of EPStatement on a statement that use an unidirectional join, you get an UnsupportedOperationException ("Iteration over a unidirectional join is not supported"): your thread holds a lock that you can never release because you don't have an iteretor object on which invoke the close method. Actually you'll get the same problem whenever safeIterator method throws an exception. |
Comments |
Comment by Thomas Bernhardt [ 06/Dec/08 ] |
Fixed by cumulative service pack http://dist.codehaus.org/esper/esper-2.3.0-JIRA311.jar to be prepended to classpath, change log is |
[ESPER-309] Named window model-after for Map-event types incompatible with insert of Map type Created: 04/Dec/08 Updated: 11/Feb/09 Resolved: 06/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.3 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | L20081203.java |
Number of attachments : | 1 |
Description |
We'r having trouble using named windows and Map type events. throws: |
Comments |
Comment by Thomas Bernhardt [ 04/Dec/08 ] |
The workaround is to list the individual columns in the insert-into statement, when using model-after in the create window with Map event types. This problem affects Map-event types only when using wildcard-selects, insert-into evaluation does not properly match/convert types. |
Comment by Alexandre Vasseur [ 05/Dec/08 ] |
test case |
Comment by Thomas Bernhardt [ 06/Dec/08 ] |
Fixed by cumulative service pack http://dist.codehaus.org/esper/esper-2.3.0-JIRA311.jar to be prepended to classpath, change log is |
[ESPER-307] Spring integration Created: 29/Nov/08 Updated: 07/Jan/09 Resolved: 07/Jan/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | New Feature | Priority: | Major |
Reporter: | Ming Fang | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | Esper-Spring-1.0-project.zip |
Number of attachments : | 1 |
Description |
Add ability for Esper to be created and configured in a Spring xml file. |
Comments |
Comment by Alexandre Vasseur [ 29/Nov/08 ] |
Thanks for the prototype - very much appreciated. Can you comment on what is/are the most important features of such an integration:
Having EPL and listeners in XML somewhat leads us to an Event Processing Network definition of some form, and this requires careful thinking as it is a wider scope. If the goal is simply to have Esper / Spring integration, your contribution demonstrates there is no real need for Esper deep down integration to get it working and that this would mostly fit into a doc + best practices + examples. |
Comment by Ming Fang [ 29/Nov/08 ] |
I'm not thinking of 'deep' integration; Just to make Esper more IOC friendly so that it fits nicely with Spring. |
Comment by Thomas Bernhardt [ 07/Jan/09 ] |
This will be added to solution patterns because of the dependency on Spring and Groovy (JDK6) |
[ESPER-306] Single backslash in string constant fails to parse Created: 26/Nov/08 Updated: 26/Nov/08 Resolved: 26/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When specifying a string constant the single backslash causes the parse to fail. For example: String regexpExpr = "select * from MyEvent where string = '<backslash><backslash>w*'"; results in an exception: com.espertech.esper.epl.parse.EPStatementSyntaxException: Incorrect syntax near '*' at line 1 column 43, please check the where clause [select * from MyEvent where string = '\w*'] |
Comments |
Comment by Thomas Bernhardt [ 26/Nov/08 ] |
As one workaround, one can use prepared statements and the substitution parameter. |
Comment by Thomas Bernhardt [ 26/Nov/08 ] |
duplicate to 305 |
[ESPER-305] escape char parsing Created: 26/Nov/08 Updated: 11/Feb/09 Resolved: 30/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Testcase included: | yes |
Number of attachments : | 0 |
Description |
Sounds like the EPL parser does not like escaped chars, such as a \w in a regexp
public class L20081125 extends TestCase implements UpdateListener { public void testObjectPreparedStatement() { Configuration configuration = new Configuration(); configuration.addEventTypeAlias("SupportBean", SupportBean.class); EPServiceProvider ep = EPServiceProviderManager.getDefaultProvider(configuration); EPStatement epStatement = ep.getEPAdministrator().createEPL( "select * from SupportBean as s0 where s0.string regexp '\\wAB.-'|| java.lang.Integer.toString(s0.intPrimitive)" ); epStatement.addListener(this); System.out.println(epStatement.getText()); ep.getEPRuntime().sendEvent(new SupportBean("ABC-123", 000)); ep.getEPRuntime().sendEvent(new SupportBean("ABC-123", 123)); }public void update(EventBean[] newEvents, EventBean[] oldEvents) { System.out.println("L20081125.update"); }public static void main(String[] args) { TestRunner.run(L20081125.class); }} |
Comments |
Comment by Thomas Bernhardt [ 26/Nov/08 ] |
When specifying a string constant the single backslash causes the parse to fail. For example: String regexpExpr = "select * from MyEvent where string = '<backslash><backslash>w*'"; results in an exception: com.espertech.esper.epl.parse.EPStatementSyntaxException: Incorrect syntax near '*' at line 1 column 43, please check the where clause [select * from MyEvent where string = '\w*'] |
Comment by Thomas Bernhardt [ 26/Nov/08 ] |
The problem only occurs for cases with a single slash. Two possible workarounds:
|
Comment by Thomas Bernhardt [ 30/Nov/08 ] |
Cumulative service pack made available at http://dist.codehaus.org/esper/esper-2.3.0-JIRA305.jar Prepend the jar file to your classpath before the Esper jar file. |
[ESPER-304] impossible to get properties of events when a listener and a subscriber are added to a statement Created: 25/Nov/08 Updated: 11/Feb/09 Resolved: 30/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Mikhail Kotliar | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
esper 2.3.0, java version "1.6.0_07", windows 2000 sp4 |
Attachments: | ListenerSubscriberErrorTest.java out.txt |
Testcase included: | yes |
Number of attachments : | 2 |
Description |
impossible to get properties of events when a listener and a subscriber are added to a statement |
Comments |
Comment by Mikhail Kotliar [ 25/Nov/08 ] |
events are processed by the following getter (com.espertech.esper.event.WrapperEventType from the line 135): Bar.java else if (underlyingMapType.isProperty(property)) { EventPropertyGetter getter = new EventPropertyGetter() { public Object get(EventBean event) { if(!(event instanceof WrapperEventBean)) { throw new PropertyAccessException("Mismatched property getter to EventBean type"); } WrapperEventBean wrapperEvent = (WrapperEventBean) event; Map map = wrapperEvent.getUnderlyingMap(); return underlyingMapType.getValue(property, map); } public boolean isExistsProperty(EventBean eventBean) { return true; // Property exists as the property is not dynamic (unchecked) } }; propertyGetterCache.put(property, getter); return getter; but the type of event is not WrapperEventBean, it is of type com.espertech.esper.event.NaturalEventBean , its structure is |
Comment by Thomas Bernhardt [ 30/Nov/08 ] |
Cumulative service pack made available at http://dist.codehaus.org/esper/esper-2.3.0-JIRA305.jar See |
[ESPER-303] Pooled DB connection obtained and returned even on cache hit Created: 22/Nov/08 Updated: 11/Feb/09 Resolved: 30/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.3 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The pooled DB configuration when used with a cache, and when the cache is filled and no database access is required, does still obtains a connection from the pool and return it. Example: EPL: (actual EPL used.) |
Comments |
Comment by Thomas Bernhardt [ 30/Nov/08 ] |
Cumulative service pack made available at http://dist.codehaus.org/esper/esper-2.3.0-JIRA305.jar |
[ESPER-302] expose last version in maven repo Created: 06/Nov/08 Updated: 08/Nov/08 Resolved: 08/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Wish | Priority: | Major |
Reporter: | Frederic Tardif | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Is there gonna be a process to ensure that the latest jar-artifacts of esper are correctly deployed in public maven repository? For the moment, there is only the version 1.11.0 which has a correct pom and jar... It is a bit misleading because there are show in the repository index, but they point to a distribution-zip without pom instead of a normal jar accompanied by the project-object -model see thread for details: |
[ESPER-301] Time batch view documentation incorrectly shows reference point as optional with flow control keywords Created: 04/Nov/08 Updated: 08/Nov/08 Resolved: 05/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Minor |
Reporter: | John Stoneham | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Page 109 of 2.2 documentation shows a sample statement: select * from MyEvent.win:time_batch(10 sec, "FORCE_UPDATE, START_EAGER") This statement is not actually allowed; TimeBatchViewFactory will only allow flow control keywords as the third argument, and the second argument, if any, must be the reference point. Either the code should be changed to allow this mode of operation or the documentation should be updated. |
Comments |
Comment by Thomas Bernhardt [ 05/Nov/08 ] |
in 2.3 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-300] IndexOutOfBoundsException in TimeBatchViewFactory Created: 04/Nov/08 Updated: 08/Nov/08 Resolved: 05/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | John Stoneham | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
com.espertech.esper.view.window.TimeBatchViewFactory contains the code: if (viewParameters.size() == 3) { processKeywords(viewParameters.get(3), errorMessage); }which will always produce an IndexOutOfBoundsException. It also prevents the proper use of the flow control parameters on the time batch view. |
Comments |
Comment by Thomas Bernhardt [ 05/Nov/08 ] |
in 2.3 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-299] Need to pass context classloader to CGLib Created: 02/Nov/08 Updated: 08/Nov/08 Resolved: 04/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | John Stoneham | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
OSGi (Equinox 3.3) |
Number of attachments : | 0 |
Description |
Running Esper under Equinox, using a bundled form like the SpringSource-wrapped form (see http://www.springsource.com/repository/app/bundle/version/detail?name=com.springsource.com.espertech.esper&version=2.2.0&searchType=bundlesByName&searchQuery=esper). antlr, org.antlr, org.antlr.stringtemplate, log4j, cglib-nodep are all in their own wrapped bundles. Esper's very good about using the Thread's context class loader for most things, but when it creates CGLib classes it uses FastClass.create(Class), instead of FastClass.create(ClassLoader,Class). Consequently CGLib uses the classloader that loaded the class passed in. Under OSGi, the thread's context classloader will have access to both the class being passed in AND CGLib (through buddy classloading or some other mechanism). However the classloader for the class itself will not have access to CGLib - so a NoClassDefFoundError (for FastClass itself!) occurs within CGLib when attempting to define the class out of the byte array. In short, I am no expert on CGLib but I believe that Esper ought to pass the thread's context class loader to it. Replacing all calls to FastClass.create(clazz) with FastClass.create(Thread.currentThread().getContextClassLoader(), clazz) ought to do the trick. (Also see related comment on |
Comments |
Comment by Alexandre Vasseur [ 03/Nov/08 ] |
Good catch on cglib - we need to look at that one in more details. Please note that the Spring Source bundle repository is the entire sole responsibility of Spring Source. Their approach of dumb and bare OSGification has lots of shortcomings - such as the one you spotted here on manifest, or f.e. the fact that they export 50+ packages while completely ignoring which one is part of the client or extension API (vs internals) |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-298] JUnit dependency in POM should be marked <scope>test</scope> Created: 02/Nov/08 Updated: 08/Nov/08 Resolved: 04/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | John Stoneham | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I don't believe JUnit is required to compile the main part of Esper, only the tests. The JUnit dependency in the POM should be marked with <scope>test</scope> so it is not issued as a transitive dependency. (If it is required to compile the main part of Esper, then it should be marked with <optional>true</optional> instead, since it is clearly possible to run Esper without JUnit on the classpath.) Believe the MySQL connector should also be marked with <optional>true</optional>. |
Comments |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-297] Detect dead database connection and retry Created: 20/Oct/08 Updated: 08/Nov/08 Resolved: 03/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A user has reported that she is using a join with an SQL result from an Oracle database connection, and that connection is shaky. |
Comments |
Comment by Thomas Bernhardt [ 20/Oct/08 ] |
What we could do is add a configuration that causes Esper to close the connection and obtain a new one and retrying the JDBC call once. Esper can also provide a DataSourceFactory interface that an application can implement instead of going through JNDI. |
Comment by Alexandre Vasseur [ 24/Oct/08 ] |
I think the current behavior has its roots in the ConnectionCache. I assume closing the connection instead of keeping it in a cache would have some impact.
|
Comment by Thomas Bernhardt [ 03/Nov/08 ] |
in release 2.3 |
Comment by Thomas Bernhardt [ 03/Nov/08 ] |
The ConnectionCache is not used for pooled connections. |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-296] EPL 'not like' expressions in prepared statements lose negation Created: 18/Oct/08 Updated: 08/Nov/08 Resolved: 02/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Mitch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The reference manual states that EPL supports: com.espertech.esper.client.EPPreparedStatement eps = admin.prepareEPL("select * from TEST(created not like 'foo%')"); |
Comments |
Comment by Mitch [ 20/Oct/08 ] |
This also occurs with test_expression [not] regexp pattern_expression |
Comment by Thomas Bernhardt [ 20/Oct/08 ] |
Assigned to 2.3 release |
Comment by Thomas Bernhardt [ 02/Nov/08 ] |
in release 2.3 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-295] Time window onto a unique window not working Created: 14/Oct/08 Updated: 08/Nov/08 Resolved: 05/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Torsten Curdt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Using this query: <code> The engine seems to fall down: <code> |
Comments |
Comment by Torsten Curdt [ 14/Oct/08 ] |
(Hm ... why can't I edit my own jira issue?) |
Comment by Thomas Bernhardt [ 20/Oct/08 ] |
Assigned to 2.3 release. |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-294] Pattern problem in 'every' operator not restarting a false sub-expression. Created: 07/Oct/08 Updated: 08/Nov/08 Resolved: 09/Oct/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | shikha aggarwal | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hi, Below is the requirement which I am trying to achieve through ESPER. When an event with status of "Pending" is recieved, it should keep checking within the next 20 sec for an event of status of "Approved, The Transaction ID of the transaction with the status "Pending" and "Approved" should be the same. The expression that I have written for the same is - as per the documentation, My expectation is that for every event a where status is pending the subexpression should be evaluated to check if an event of status approved in recveed where the transaction id matched with the event a transaction Id and it should do that for 20 seconds. However , this only workd for the first time. Here is the test events that I am firing - BaseEvent tranEvent = new TransactionApprovedEvent("Transaction1", "1",1,1,"Pending",3L); Here send function send to the Esper EPRuntme.send the transaction Id is the third field in the Transaction Approved Event(here 1,2,5). All the three events are fired together without any time lag. At ESPER Rumtime, only the first even is logged i.e. Transaction1 , none of the others get logged. Thanks |
Comments |
Comment by Thomas Bernhardt [ 09/Oct/08 ] |
Don't forget the engine delivers an array of events all at once. Thereby if you send 3 events and the time slot is the same, they'll be indicated back in one batch. |
Comment by shikha aggarwal [ 09/Oct/08 ] |
I am not sure if I understand this correct , even if the engine executes them as batch, after 20 seconds it should fire thrice to the listener indicating that none of the events Transaction1,transaction2 or Transaction 3 which are pending events are followed by approved. However the engine fires for only one which is not correct. |
Comment by shikha aggarwal [ 09/Oct/08 ] |
Thanks Tom, I think I understand what you mean by batch event delivery. I |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-293] No array property support for Map event type unless array part of POJO Created: 03/Oct/08 Updated: 08/Nov/08 Resolved: 02/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I've tried the syntax but it doesn't seem to work for Nested maps of arrays...for example, the following code results HashMap<String, Object> prop = new HashMap<String, Object>(); epService.getEPAdministrator().getConfiguration().addEventTypeAliasNestable("RouteIn", I've tried lots of variations on the definition of 'route' such as using |
Comments |
Comment by Thomas Bernhardt [ 07/Oct/08 ] |
(further question raised as below and copied from mailing list) How do I define an array in a nested map, HashMap<String, Object> prop = new HashMap<String, Object>(); Now, if route is actually an array of POJOs, I'd put in something like: But if I want to keep pojos out of this and define RoutePOJO as a Map... how HashMap<String, Object> routeMap = new HashMap<String, Object>(); HashMap<String, Object> prop = new HashMap<String, Object>(); We have a particular interest in using nested maps to represent pojos, so |
Comment by Thomas Bernhardt [ 20/Oct/08 ] |
Assigned to 2.3 release |
Comment by Thomas Bernhardt [ 02/Nov/08 ] |
in 2.3 release |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-292] esper_reference.pdf : Figure 3.4. is incorrect Created: 02/Oct/08 Updated: 08/Nov/08 Resolved: 02/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Trivial |
Reporter: | Mikhail Kotliar | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Reference Documentation, Version: 2.2.0, Figure 3.4. Output example for a statement with where-clause , page 17 in pdf, W5 event should not be notified to listeners |
Comments |
Comment by Thomas Bernhardt [ 02/Oct/08 ] |
You are right, great find. Thanks for the info |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-291] Delivery to observer failes with NPE if custom view posts null insert and remove stream Created: 01/Oct/08 Updated: 08/Nov/08 Resolved: 01/Oct/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The stack trace is as folows 2008-09-30 10:28:11,068 ERROR [com.espertech.esper.timer.EPLTimerTask] Timer thread caught unhandled exception: java.lang.NullPointerException |
Comments |
Comment by Thomas Bernhardt [ 01/Oct/08 ] |
code changes are in branch bugfix220 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-290] FIX adapter not documented Created: 23/Sep/08 Updated: 08/Nov/08 Resolved: 04/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
2.2 changelog says "# Added JMS text message marshaller and unmarshallers for Fix (Fix is a standard financial interchange format)" See interest here |
Comments |
Comment by Thomas Bernhardt [ 04/Nov/08 ] |
in 2.3 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-289] add wso2 slideware to site slide section Created: 23/Sep/08 Updated: 02/Nov/08 Resolved: 02/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Add this to the site past presentation section |
Comments |
Comment by Alexandre Vasseur [ 23/Sep/08 ] |
Also this one |
Comment by Thomas Bernhardt [ 02/Nov/08 ] |
Site changes released |
[ESPER-288] Write-only property of POJO event shows up in property name list Created: 18/Sep/08 Updated: 08/Nov/08 Resolved: 05/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Take an event that has a write-only property, such as } The property "side" shows up in the list of property names for the event. Assigned to 2.3 as this change would slightly change public runtime interface. |
Comments |
Comment by Thomas Bernhardt [ 05/Nov/08 ] |
in 2.3 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-287] Improve startup performance for large numbers of statements with the same filter property Created: 17/Sep/08 Updated: 08/Nov/08 Resolved: 05/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 2.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Morgan | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperFilterStartupTest.java |
Number of attachments : | 1 |
Description |
I would like the option of using the filter approach with one statement per ticker, but once you get to 100k statements the startup time gets prohibitive. Looks like the problem is that the FilterSpecCompiled.hashCode is based on the propertyNames of the filter. So if the same property name is used all the entries get added to the same bucket in the HashMap and the get and put operations slow. Is there a way to improve the hashCode of FilterSpecCompiled? |
Comments |
Comment by Thomas Bernhardt [ 18/Sep/08 ] |
You can disable view sharing which reuses streams and views among statements. By setting: We will still look into how we can improve the lookup speed with view sharing enabled (the default). |
Comment by Thomas Bernhardt [ 18/Sep/08 ] |
Assigned to release 2.3 |
Comment by Thomas Bernhardt [ 20/Oct/08 ] |
Assigned to 2.3 release |
Comment by Thomas Bernhardt [ 05/Nov/08 ] |
in 2.3 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-286] Map inheritance event type processes first derived event only for queries against supertype events Created: 17/Sep/08 Updated: 08/Nov/08 Resolved: 17/Sep/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-2.2.0-JIRA286.jar |
Number of attachments : | 1 |
Description |
The issue manifests if a Map inheritance is configured, for example using XML as follows: When two or more DerivedEvent event are sent into the engine, only the first derived event is processed by the engine for any statement matching the supertype. So for example: Therefore if the query is... |
Comments |
Comment by Thomas Bernhardt [ 17/Sep/08 ] |
A unit test showing the problem is below. import com.espertech.esper.client.*; import javax.xml.parsers.DocumentBuilderFactory; // TODO - remove me protected void setUp() throws Exception { String configXml = "<esper-configuration> <event-type alias=\"BaseEvent\">\n" + " <java-util-map>\n" + " <map-property name=\"Param1\" class=\"string\"/>\n" + " <map-property name=\"Param2\" class=\"long\"/>\n" + " </java-util-map>\n" + " </event-type>\n" + " <event-type alias=\"DerivedEvent\">\n" + " <java-util-map supertype-aliases=\"BaseEvent\">\n" + " </java-util-map>\n" + "</event-type>\n" + "</esper-configuration>"; Configuration configuration = new Configuration(); configuration.configure(getDocument(configXml)); epService = EPServiceProviderManager.getDefaultProvider(configuration); }public void testMapDerived() { String statementText = "select * from BaseEvent"; EPStatement statement = epService.getEPAdministrator().createEPL(statementText); MyListener listener = new MyListener(); statement.addListener(listener); Map event = new HashMap(); event.put("id", "E1"); epService.getEPRuntime().sendEvent(event, "DerivedEvent"); assertEquals(1, listener.getEvents().size()); event = new HashMap(); event.put("id", "E2"); epService.getEPRuntime().sendEvent(event, "DerivedEvent"); assertEquals(2, listener.getEvents().size()); }private Document getDocument(String xml) throws Exception { InputSource source = new InputSource(new StringReader(xml)); DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); builderFactory.setNamespaceAware(true); return builderFactory.newDocumentBuilder().parse(source); } public static class MyListener implements UpdateListener public void update(EventBean[] newEvents, EventBean[] oldEvents) } public List<EventBean> getEvents() { return events; } } |
Comment by Thomas Bernhardt [ 17/Sep/08 ] |
Cumulative bug fix for Esper 2.2 attached. The jar file should be in the classpath before the "esper-2.2.0.jar" file. Fixes the following issues:
|
Comment by Thomas Bernhardt [ 17/Sep/08 ] |
Bug fix applied to bugfix220 branch and service pack provided. |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-285] Correlation and Linest stats view within groupby problem Created: 15/Sep/08 Updated: 08/Nov/08 Resolved: 18/Sep/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Morgan | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | EsperStatViewTest.java |
Number of attachments : | 1 |
Description |
I'm seeing some inconsistencies with using groupby with various stats views. I think its a bug, but it might just be that I'm new to esper. I'd like the groupby property(ies) to be available in the event so they can be referenced later. 1) Univariate statistics - select * from Market.std:groupby(ticker).win:length(1000000).stat:linest(price, volume) 2) Weighted Avg - select * from Market.std:groupby(ticker).win:length(1000000).stat:weighted_avg(price, volume) 3) Regression - select * from Market.std:groupby(ticker).win:length(1000000).stat:linest(price, volume) 3) Correlation - select * from Market.std:groupby(ticker).win:length(1000000).stat:correl(price, volume) |
Comments |
Comment by Thomas Bernhardt [ 16/Sep/08 ] |
To 2) I cannot reproduce this issue 3) and 3) There is no such property "dataPoints" provided, see docs at http://esper.codehaus.org/esper-2.2.0/doc/reference/en/html_single/index.html#view-stat-correl for provided values |
Comment by Morgan [ 17/Sep/08 ] |
OK, I figured out the problem with the weighted average view is that I was using it in conjunction with the merge view. Merge is listed as a workaround for http://jira.codehaus.org/browse/ESPER-282 Since its undocumented I'm not sure if it should work in combination. There are still issues with the linest and correl views. I'll attach a test case |
Comment by Morgan [ 17/Sep/08 ] |
junit test |
Comment by Thomas Bernhardt [ 18/Sep/08 ] |
The statement: Moving the merge view to a different spot give a different behavior: |
Comment by Thomas Bernhardt [ 18/Sep/08 ] |
bug fix in branch bugfix220 |
Comment by Thomas Bernhardt [ 18/Sep/08 ] |
We do still need to document the merge view and can still improve performance by removing some unnecessary mapping. |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-284] Write a comparison agains Cayuga Created: 12/Sep/08 Updated: 20/Oct/08 Resolved: 20/Oct/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Wish | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
http://www.cs.cornell.edu/database/cayuga/ Would be cool to see some of their example 'statements' implemented using Esper. E.g. "Notify me whenever the price of a stock has been increasing for the past 10 minutes followed by a 3 minute duration when the price is constant." Which in Cayuga is expressed as: SELECT * ( (S FOLD {Name=$1.Name, Price > $.Price, } S) S) |
Comments |
Comment by Thomas Bernhardt [ 12/Sep/08 ] |
This is the third time I'm looking at Cayuga and in summary while some use cases look rather elegantly addressed with the language, the FOLD is hard to understand, and the use cases seemed picked for easy to address. Can you explain the above query please and what a FOLD operation means on a stream? |
Comment by Thomas Bernhardt [ 20/Oct/08 ] |
No further interest encountered |
[ESPER-283] Add user object support to EPStatement Created: 12/Sep/08 Updated: 08/Nov/08 Resolved: 03/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | New Feature | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Add user object support to EPStatement:
|
Comments |
Comment by Mathias Bogaert [ 12/Sep/08 ] |
I meant add createXXX methods that accept an Object as 'user object. |
Comment by Thomas Bernhardt [ 03/Nov/08 ] |
in 2.3 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-282] Memory leak in grouped data window when combined with weighted-avg view Created: 11/Sep/08 Updated: 18/Sep/08 Resolved: 12/Sep/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'm wondering why there such a big performance difference in using a I looked at the Esper benchmark example and found it generated a The example replaces the $ with an ticker instead of creating 1 statement with However, I don't want to have to pre-register all the assets. Very |
Comments |
Comment by Thomas Bernhardt [ 11/Sep/08 ] |
The workaround is to add an explicit merge using std:merge as follows... select * from Market.std:groupby(ticker).win:length(1000).std:merge(ticker).stat:weighted_avg('price','volume') There is still some optimizations we can implement to the grouped data window. |
Comment by Alexandre Vasseur [ 12/Sep/08 ] |
std:merge is not documented in Esper 2.2.0 although in there. |
Comment by Alexandre Vasseur [ 12/Sep/08 ] |
It is important to remember that the one statement per ticker (and 1000 statements) was choosen in the benchmark to showcase the best performance and lowest latency. (ie million event / second with sub millisecond latency goal). Early statement / event type / filtering matching is more performant than groupby |
Comment by Thomas Bernhardt [ 12/Sep/08 ] |
This bug affects the weighted average view and not other derived-value views. |
Comment by Thomas Bernhardt [ 12/Sep/08 ] |
Changes made in bugfix220 branch |
Comment by Morgan [ 17/Sep/08 ] |
I would like the option of using the filter approach with one statement per ticker, but once you get to 100k statements the startup time gets prohibitive. Looks like the problem is the FilterSpecCompiled.hashCode is based on the propertyNames of the filter. So if the same property name is used all the entries get added to the same bucket in the HashMap and the get and put operations slow. Is there a way to improve the hashCode of FilterSpecCompiled? |
Comment by Thomas Bernhardt [ 18/Sep/08 ] |
Duplicate to http://jira.codehaus.org/browse/ESPER-287 |
[ESPER-281] On-Select with Insert-Into throws NPE if no data selected from named window Created: 07/Sep/08 Updated: 08/Nov/08 Resolved: 07/Sep/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This affects an on-select clause that selects from a named window and that employs the insert-into clause to populate a stream. When the on-select finds no data evaluating the named window query the result is below exception: com.espertech.esper.client.EPException: java.lang.NullPointerException |
Comments |
Comment by Thomas Bernhardt [ 07/Sep/08 ] |
Fix in branch bugfix 2.2 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-280] isVariantStreamExists throws nptr Created: 27/Aug/08 Updated: 08/Nov/08 Resolved: 07/Sep/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Critical |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
java.lang.NullPointerException The code just does an instance check, no null check: public boolean isVariantStreamExists(String name) { return valueAddEventService.getValueAddProcessor(name).getValueAddEventType() instanceof VariantEventType; }Doh! |
Comments |
Comment by Thomas Bernhardt [ 28/Aug/08 ] |
Can we have a statement that triggers this error? Or better yet a JUnit TestCase please |
Comment by Thomas Bernhardt [ 07/Sep/08 ] |
Bug fix available in branch bugfix220 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-279] Upgrade to ANTLR 3.1 Created: 27/Aug/08 Updated: 11/Feb/09 Resolved: 02/Jan/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 3.0 |
Type: | Task | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Final version was released 8-12-08: http://antlr.org/wiki/display/ANTLR3/ANTLR+3.1+Release+Notes Performance quote: "about 15% speed improvement in overall ANTLR exec time. Memory footprint seems to be about 50% smaller." |
Comments |
Comment by Thomas Bernhardt [ 12/Sep/08 ] |
Assigned for 2.3 |
Comment by Thomas Bernhardt [ 02/Jan/09 ] |
In release 3.0 |
[ESPER-278] Have Esper sort strings use java.text.Collator instead of using String.compareTo() Created: 25/Aug/08 Updated: 08/Nov/08 Resolved: 05/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | anshul | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
N/A |
Number of attachments : | 0 |
Description |
Esper currently sorts strings (when processing EPL order by clauses) using String.compareTo() that will result in sub-optimal sort orders for non-ascii characters. See email thread: |
Comments |
Comment by Thomas Bernhardt [ 20/Oct/08 ] |
Assigned to 2.3 release |
Comment by Thomas Bernhardt [ 05/Nov/08 ] |
in 2.3 as an optional engine-wide setting to use Collator for string-type properties |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-277] Add route methods for routing Maps, XML and plug-in event representation events Created: 23/Aug/08 Updated: 08/Nov/08 Resolved: 08/Sep/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
per user request: The route() API is not symmetric with the sendEvent() API, ie. there's no way to route Maps or XML events. Looking at the EPRuntimeImpl code, it appears any data, sent via route(), that is not an EventBean, is interpreted as a POJO event. Is there any easy way to route a map with an event type alias. Seems like I can post an EventBean that wraps the map... is there an easy way to create an event bean for the map using the client API? Can I get a reference to EventAdapterService instance from the client API somehow? |
Comments |
Comment by Thomas Bernhardt [ 23/Aug/08 ] |
To 2., yes the route(Object) indeed needs to provide additional methods it currently does not provide. Since an EventSender can send custom event representations, the additional route methods would be: |
Comment by Thomas Bernhardt [ 08/Sep/08 ] |
In branch bugfix220 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-276] NullPointerException reported when enabling metrics reporting but still working Created: 22/Aug/08 Updated: 11/Feb/09 Resolved: 06/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A user reports the following nullpointerexception being reported upon startup, however the exception does not impact operation: 09:40:30,566 DEBUG [Configuration] Configuring from resource: esper-config.xml |
Comments |
Comment by Thomas Bernhardt [ 07/Sep/08 ] |
Bug fix in branch bugfix220 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
Comment by Thomas Bernhardt [ 22/Nov/08 ] |
There appears an additional issue, also not affecting the actual metrics reporting however being reported in the log file: 12:03:55,166 INFO [MetricReportingPath] Metrics reporting has been enabled, this setting takes affect for all engine instances at engine initialization time. |
Comment by Thomas Bernhardt [ 06/Dec/08 ] |
Fixed by cumulative service pack http://dist.codehaus.org/esper/esper-2.3.0-JIRA311.jar to be prepended to classpath, change log is |
[ESPER-275] Identifiers that are scientific notation numbers don't cause a parser error Created: 20/Aug/08 Updated: 08/Nov/08 Resolved: 07/Sep/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For example the statement: |
Comments |
Comment by Thomas Bernhardt [ 20/Aug/08 ] |
The error printed by the parser is: |
Comment by Thomas Bernhardt [ 07/Sep/08 ] |
In branch bugfix220 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-274] Strange exception using median collection Created: 20/Aug/08 Updated: 08/Nov/08 Resolved: 12/Sep/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 2.3 |
Type: | Bug | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
java.lang.IllegalStateException: Value not found in collection I might have send a combination of null and zero as values, causing this behavior. |
Comments |
Comment by Thomas Bernhardt [ 20/Aug/08 ] |
We'd need to have a statement and optimally a sequence of events that reproduce this problem please. Our regression tests don't reproduce this issue. |
Comment by Mathias Bogaert [ 22/Aug/08 ] |
I found the problem: it's caused due to Double.NaN. From the javadoc: If <code>d1</code> and <code>d2</code> both represent Double.NaN, then the equals method returns <code>true</code>, even though Double.NaN==Double.NaN has the value false. The SortedDoubleVector uses if ((index == -1) || (values.get(index) Unable to render embedded object: File (= value))) not found. |
Comment by Mathias Bogaert [ 22/Aug/08 ] |
Jira has some rendering issues. values.get(index) doesn't use equals, and thus Double.NaN is evaluated to false, causing the exception (seel line 81 of SortedDoubleVector). |
Comment by Mathias Bogaert [ 27/Aug/08 ] |
More debugging revealed that the other AggregationMethods cope fine with Double.Nan values. |
Comment by Thomas Bernhardt [ 07/Sep/08 ] |
Would you have a suggestion for the bug fix for this issue? |
Comment by Thomas Bernhardt [ 12/Sep/08 ] |
In bugfix220 branch for release 2.3 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-273] Send event before EPServiceProvider.destroy() Created: 20/Aug/08 Updated: 03/Nov/08 Resolved: 03/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | New Feature | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In order for listeners to cleanup themselves (and release any resources they might hold), a simple 'destroy'-event that can be listened for (every event=EPServiceProviderDestroyEvent) could be sent to the runtimes that are shutting down. Or perhaps the more common approach: EPRuntime.addStateListener(EPRuntimeStateListener listener) containing onEPRuntimeStarted(EPRuntime runtime), onEPRuntimeDestroyRequested(EPRuntime runtime) (invoked before the actual destroy). Also; perhaps also add an EPAdministrator.addStatementStatelistener(StatementStateListener listener) (contains onStatementStart(EPStatement statement) and onStatementStop(EPStatement statement) ? |
Comments |
Comment by Thomas Bernhardt [ 03/Nov/08 ] |
In release 2.3 |
[ESPER-272] Add OSGi support to MANIFEST.MF Created: 17/Aug/08 Updated: 08/Nov/08 Resolved: 04/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.3 |
Type: | New Feature | Priority: | Minor |
Reporter: | John Stoneham | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Add OSGi attributes to MANIFEST.MF to allow Esper/EsperIO to be used directly as an OSGi bundle. In environments where Esper is being deployed as part of an OSGi container such as Eclipse Equinox, Apache Felix, or Knopflerfish, it is required to repackage Esper while adding OSGi-specific attributes to MANIFEST.MF specifying a bundle name, version, imports/dependencies, and exported packages. It would be ideal if Esper shipped with these attributes pre-defined. Additional attributes in MANIFEST.MF should be the only modifications necessary. Paraphrase of Wikipedia: OSGi implements a complete and dynamic component model, something that is missing in standalone Java/VM environments. Applications or components (coming in the form of bundles for deployment) can be remotely installed, started, stopped, updated and uninstalled without requiring a reboot; management of Java packages/classes is specified in great detail. Life cycle management is done via APIs which allow for remote downloading of management policies. The service registry allows bundles to detect the addition of new services, or the removal of services, and adapt accordingly. Some excellent tutorials on OSGi and tutorials can be found at http://neilbartlett.name/blog/osgi-articles/ and http://neilbartlett.name/blog/osgibook/ . Also, of course, http://en.wikipedia.org/wiki/OSGi is a good starting point. |
Comments |
Comment by Thomas Bernhardt [ 18/Aug/08 ] |
From your description the OSGi container would then also need to have the dependent bundles deployed separately (i.e. log4j, apache commons, cglib, antlr), unless the dependent jars are shipped with the Esper OSGi jar itself. In your use case, are you planning to deploy dependent bundles separatly and the Esper OSGi jar would import these? Maven has a nice bundle generator that could be used since the Esper build system is based on Maven. |
Comment by John Stoneham [ 18/Aug/08 ] |
A bundle can technically have any classpath, and contain internal JARs. Framework implementations generally know how to pull classes from JARs within JARs; however, this is not recommended practice. (It also generally means that the shipped version has to be exploded if you are to compile against it, since IDEs generally do NOT support JARs within JARs.) So it means a possible deployment model is that the Esper bundle JAR also included internal JARs containing these dependencies, or a "dependencies" JAR containing them, etc. However what you suggested is the recommended practice. Most people shipping OSGi applications will already have some of these bundles deployed; the Esper bundle simply needs to specify its version dependencies in its MANIFEST.MF. When they don't have the bundle, they will either go find it if one is being published, or attempt to create OSGi metadata for it themselves, just as we will be doing currently with Esper. Encouragingly, the folks at Spring-DM (OSGi extensions for the Spring framework) have created a Maven repository full of pre-OSGified bundles. It is technically supported only for Spring-DM's use but they continue to publicize it. See http://www.springsource.com/repository/app/faq for more information. Apache Felix has a bunch of bundles as well: http://felix.apache.org/site/apache-felix-commons.html Also, http://blog.springsource.com/main/2008/02/18/creating-osgi-bundles/ has a link to several repositories of OSGIfied bundles. |
Comment by Thomas Bernhardt [ 20/Oct/08 ] |
Assigned to 2.3 release |
Comment by John Stoneham [ 02/Nov/08 ] |
Having tried this out myself by wrapping each of the dependencies in a bundle, as well as Esper itself: because Esper needs reflective access to classes based on its configuration, classloading under OSGi is tricky. Using the thread's context classloader for all things - including calls to CGLib (see An easier way to handle all this, at least under the Equinox OSGi implementation, is to include "Eclipse-BuddyPolicy: dependent" in the bundle manifest. This will cause the classloader to also be able to load classes from any bundle that depends on Esper. (If those bundles have the same line in their manifest, then their dependencies will be accessible, etc.) This line is proprietary to Equinox, but would help at least some users get Esper running more easily. I also found that I needed to add this line to CGLib's bundle manifest. I'm not sure if it's because of an Esper issue or a CGLib issue. May require some investigation. |
Comment by Thomas Bernhardt [ 04/Nov/08 ] |
in 2.3, including FastClass.create(Thread.currentThread.context loader) |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-271] EsperIO core relies on beanutil for just one method call Created: 09/Aug/08 Updated: 14/Oct/11 Resolved: 14/Oct/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EsperIO core relies on apache common Beanutil for just one method call. We should simplify this there seem to be a dep. between core EsperIO and Spring as well for some spring.BeanUtil call
Further on, EsperIO deps. are not documented |
Comments |
Comment by Thomas Bernhardt [ 14/Oct/11 ] |
EsperIO CSV adapter will need this one call for populating beans |
[ESPER-270] Property name order not always reflecting select clause order for getPropertyNames Created: 08/Aug/08 Updated: 15/Aug/08 Resolved: 08/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Shouldn't this always give the same output (for the same statement)? |
Comments |
Comment by Torsten Curdt [ 09/Aug/08 ] |
Hmm ...where is the fix? I've tried the 2.2.0 branch. But still the same behavior This is actually a real blocker for us. Any pointers to the code? |
Comment by Thomas Bernhardt [ 09/Aug/08 ] |
We have merged to trunk already. Release of Esper 2.2 is tomorrow. |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-269] User-define method with dot in parameter generates property not found Created: 08/Aug/08 Updated: 15/Aug/08 Resolved: 08/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 2.2 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
> Geometry object to the esper service. Now when I build the WKT (well known |
Comments |
Comment by Thomas Bernhardt [ 08/Aug/08 ] |
in release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-268] User-defined function reports runtime errors through the stack Created: 07/Aug/08 Updated: 15/Aug/08 Resolved: 08/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Bug | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
com.espertech.esper.client.EPException: Method 'pow' of class 'Math' reported an exception: java.lang.NullPointerException I'm guessing it's because I'm sending in a null value in a Math.pow expression, but the NPTR shouldn't appear? |
Comments |
Comment by Thomas Bernhardt [ 08/Aug/08 ] |
The runtime exception should instead be caught and logged, return value is null. |
Comment by Thomas Bernhardt [ 08/Aug/08 ] |
in release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-267] Allow SenderThreadPool to be constructed with an ExecutorService for EsperIO sender Created: 06/Aug/08 Updated: 15/Aug/08 Resolved: 07/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Next to having a constructor that accepts a thread pool size, also allow for a ExecutorService to be passed in. |
Comments |
Comment by Thomas Bernhardt [ 07/Aug/08 ] |
in release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-266] Instrumentation assumes JVM and OS that supports CpuTime calls Created: 05/Aug/08 Updated: 06/Aug/08 Resolved: 06/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Was reading (with great interest) through the FishEye commits, and my eye caught something: the code is calling getCurrentThreadCpuTime() without checking if the JVM and OS support this (though calling isThreadCpuTimeSupported() and isCurrentThreadCpuTimeSupported()). |
[ESPER-265] Switch to SLF4J Created: 04/Aug/08 Updated: 05/Feb/11 Resolved: 30/Jul/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 5.0 |
Type: | Wish | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hibernate, Jetty, Spring-OSGI, Wicket, Tapestry have all switched, because of performance and quality. Please consider switching as well. |
Comments |
Comment by Thomas Bernhardt [ 06/Aug/08 ] |
Unless execution path logging is turned on via configuration, there is currently no LOG4J code on the event and timer execution paths as of Esper 2.0. |
Comment by Thomas Bernhardt [ 30/Jul/10 ] |
Staying with log4j as there is no performance impact as execution path logging is well separated out |
Comment by Holger Hoffstätte [ 30/Jul/10 ] |
Thomas, please reconsider (sorry for not pitching in earlier). Switching away from a direct log4j dependency has numerous benefits. log4j has many problems with OSGi, and the direct dependency makes switching to a different backend - and consequently consistent configuration & operations - much more difficult. Switching to slf4j either directly or via the commons-logging interfaces will still allow you to use log4j as backend. Not sure why anybody would want to do that, as logback is quite superior in a number of ways. A potential performance benefit could be that slf4j also allows for logging without the overhead of argument evaluation, as it directly supports format strings: log.debug("foo is: {}", aFoo) and here aFoo.toString() is not invoked unless the DEBUG level is really active. slf is being adopted everywhere for good reasons. Please don't hesitate to ask on the list if you have more questions. Thanks |
Comment by Thomas Bernhardt [ 30/Jul/10 ] |
Esper has no direct dependency on log4j, its only direct dependency is commons-logging. Does that clear your concerns? |
Comment by Holger Hoffstätte [ 30/Jul/10 ] |
Yes, in that case all is well. Thanks! |
Comment by Thomas Bernhardt [ 30/Jul/10 ] |
Thanks for your comment and confirmation. |
Comment by Tomas Fecko [ 05/Feb/11 ] |
Hi, let's forget the performance and all that stuff, what I want to do, is embedd esper in my app to give it a try and when no logging facade is available in esper, I'm forced to use what esper offers... If you log through the slf4j, you can let user decide which logger he wants to use - and that's the main benefit of slf4j. so I don't get bothered by this: log4j:WARN No appenders could be found for logger (com.espertech.esper.core.EPServiceProviderImpl). when no log4j.properties is available... |
Comment by Holger Hoffstätte [ 05/Feb/11 ] |
Tomas, as Thomas Bernhardt already said the only direct dependency is on the commons-logging interfaces, so all you have to do is replace that jar with jcl-over-slf4j as described in http://www.slf4j.org/legacy.html. You can then redirect slf4j to any backend you want - nop, logback, jul (eek), whatever. |
[ESPER-264] Unidirectional keyword with aggregation posts lifetime-cumulative results rather then join-current cumulative results Created: 30/Jul/08 Updated: 15/Aug/08 Resolved: 07/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The problem is not in the sum function but the number of events. I modified my query so that I just got the count of events for each I should have gotten 3 each time it ran. I got 3 on after the first minute. I thought std:unique(name) would limit the events to the last one for each |
Comments |
Comment by Thomas Bernhardt [ 30/Jul/08 ] |
This problem affects the 'unidirectional' keyword when aggregation functions are used in the same statement. Results posted by the statement are incorrectly cumulative in respect to when the statement started. This can be a correct result when used with certain join criteria and data windows. The aggregation results should be cumulative in respect to the current join results. There are several workarounds:
|
Comment by Thomas Bernhardt [ 07/Aug/08 ] |
In release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-263] add boolean ConfigurationOperations.isVariantStreamExists(String variantStreamName) Created: 22/Jul/08 Updated: 15/Aug/08 Resolved: 28/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Would be nice to have boolean ConfigurationOperations.isVariantStreamExists(String variantStreamName) |
Comments |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-262] Treat BigDecimal (and BigInteger ?) like other numeric types. Created: 16/Jul/08 Updated: 15/Aug/08 Resolved: 27/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | New Feature | Priority: | Major |
Reporter: | Graham Miller | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
All |
Number of attachments : | 0 |
Description |
Currently, if you issue the following query: select bd1, bd2 from AnEvent where bd1 > bd2 And AnEvent has properties bd1 and bd2 which are of type BigDecimal, you will get: com.espertech.esper.client.EPStatementException: Error validating expression: Implicit conversion from datatype 'BigDecimal' to numeric is not allowed [select bd1, bd2 from AnEvent where bd1 > bd2] It would be nice if this worked. Even better would be if things like statistics worked on BigDecimals, but on that front I'd actually be ok with (explicit) conversion to double... |
Comments |
Comment by Thomas Bernhardt [ 17/Jul/08 ] |
Assigned to 2.2 |
Comment by Thomas Bernhardt [ 27/Jul/08 ] |
in Esper 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-261] Allow reserved keywords in Java class package names Created: 16/Jul/08 Updated: 15/Aug/08 Resolved: 28/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently a package name such as fails to parse the statement. The workaround is to declare an alias for affected class or auto-import the package. |
Comments |
Comment by Thomas Bernhardt [ 28/Jul/08 ] |
Esper 2.2 outputs improved error messages if a Java package name contains a reserved keyword. |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-260] Make EventTypeAliases removable at Runtime Created: 16/Jul/08 Updated: 08/Nov/08 Resolved: 02/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 2.3 |
Type: | Wish | Priority: | Major |
Reporter: | Lukas Plewniak | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be very helpfull for me if at least MapTypeAliases would be removeable. I want to create OutputAdapter, which i can plug in at runtime and which are listening to special MapEvents. As I want to be able to remove these Adapter at Runtime without destroying other running statements, I need a feature wich removes Eventtypes (at least for Maps, XML would be great too). For Example: INSERT INTO startwebservice With having startwebservice added as MapEventAlias at Adapter startup. The Adapter would listen to the Type and react on any incoming Event. Registrating the Adapter at Runtime does already work. All I need now is a method for removing the EventType. In this UseCase it is no problem automaticly destroying all Statements inserting or listening on this type, it would be even helpfull. Lukas |
Comments |
Comment by Thomas Bernhardt [ 02/Nov/08 ] |
in 2.3 release |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-259] Enhance order-by and/or output rate limiting for ordered and batched result sets to output top or bottom N rows Created: 11/Jul/08 Updated: 15/Aug/08 Resolved: 30/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Major |
Reporter: | Torsten Curdt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The output clause does not have a limit to reduce the number of events. Right one would have to use two statements to get the sorted top n from a query. insert into UriCount select event.uri as uri, count as count from event.win:time(1 hour) group by uri I personally would prefer something along the lines of select event.uri as uri, count as count from event.win:time(1 hour) group by uri sorted by count limited to 10 output every 5 seconds http://archive.esper.codehaus.org/user/B8A7E8AB-F0E7-4733-831B-2F96925DB4A5%40vafer.org |
Comments |
Comment by Thomas Bernhardt [ 11/Jul/08 ] |
The syntax for output rate limiting is currently: When using order-by and output rate limiting, it can be preferable to output only the top N or bottom N rows according to sort order. How about adding a "top" and "bottom" keyword: The the query would look as follows: |
Comment by Torsten Curdt [ 11/Jul/08 ] |
Sound fine to me. Was just thinking of the mysql 'limit' clause. |
Comment by Thomas Bernhardt [ 15/Jul/08 ] |
By adding an optional "limit" clause after the "order by" clause, the iterator (poll API) would also benefit from this syntax. Therefore we may want to leave the output clause as is and add a limit clause just as MySQL/Oracle/Postgres support. Example, see original example by Thorsten: The syntax of limit is: |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-258] Extension points for esperio Created: 30/Jun/08 Updated: 15/Aug/08 Resolved: 06/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | ext5.patch |
Number of attachments : | 1 |
Description |
See http://archive.esper.codehaus.org/dev/9aface870806231426jc975c15m2bafcce053afc824@mail.gmail.com |
Comments |
Comment by Jerry Shea [ 30/Jun/08 ] |
A couple of changes: |
Comment by Thomas Bernhardt [ 15/Jul/08 ] |
For incorporation in 2.2 release |
Comment by Thomas Bernhardt [ 06/Aug/08 ] |
in release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-257] Esperio beans input to support subset of beans properties in input CSV Created: 30/Jun/08 Updated: 15/Aug/08 Resolved: 06/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | beans.patch |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
Minor change to prevent exception being thrown when we specify explicit properties for CSV file. If we have a bean that contains properties a,b,c, then this allows us to have an input file containing only a and b or b and c. |
Comments |
Comment by Thomas Bernhardt [ 06/Aug/08 ] |
in release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-256] It would be really useful for CSVInputAdapter to have a row count so we can tell how many rows it has processed Created: 30/Jun/08 Updated: 15/Aug/08 Resolved: 06/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | rowCount.patch |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
I've added a rowCount member and an accessor. We find this very useful... |
Comments |
Comment by Thomas Bernhardt [ 06/Aug/08 ] |
in release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-255] java.lang.NullPointerException at com.espertech.esper.pattern.EvalAndStateNode.evaluateTrue Created: 24/Jun/08 Updated: 15/Jul/08 Resolved: 15/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
RHEL 64 bit, Sun JDK 1.6.05 |
Number of attachments : | 0 |
Description |
I haven't managed to build a test case to reproduce this yet I'm afraid but thought I would post it here in case anyone has any ideas. Stack trace is: java.lang.NullPointerException at com.espertech.esper.pattern.EvalAndStateNode.evaluateTrue(EvalAndStateNode.java:88) at com.espertech.esper.pattern.EvalObserverStateNode.observerEvaluateTrue(EvalObserverStateNode.java:48) at com.espertech.esper.pattern.observer.TimerIntervalObserver.scheduledTrigger(TimerIntervalObserver.java:49) at com.espertech.esper.core.EPRuntimeImpl.processScheduleHandles(EPRuntimeImpl.java:421) at com.espertech.esper.core.EPRuntimeImpl.processSchedule(EPRuntimeImpl.java:310) at com.espertech.esper.core.EPRuntimeImpl.processTimeEvent(EPRuntimeImpl.java:277) at com.espertech.esper.core.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:203) at com.espertech.esper.core.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:111) at The offending line is: Events are being posted to the engine on multiple threads. |
Comments |
Comment by Jerry Shea [ 24/Jun/08 ] |
Fix formatting.... java.lang.NullPointerException at com.espertech.esper.pattern.EvalAndStateNode.evaluateTrue(EvalAndStateNode.java:88) at com.espertech.esper.pattern.EvalObserverStateNode.observerEvaluateTrue(EvalObserverStateNode.java:48) at com.espertech.esper.pattern.observer.TimerIntervalObserver.scheduledTrigger(TimerIntervalObserver.java:49) at com.espertech.esper.core.EPRuntimeImpl.processScheduleHandles(EPRuntimeImpl.java:421) at com.espertech.esper.core.EPRuntimeImpl.processSchedule(EPRuntimeImpl.java:310) at com.espertech.esper.core.EPRuntimeImpl.processTimeEvent(EPRuntimeImpl.java:277) at com.espertech.esper.core.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:203) at com.espertech.esper.core.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:111) at .... |
[ESPER-254] Iterating over joins that join by polling execution (database or method joins) Created: 15/Jun/08 Updated: 15/Aug/08 Resolved: 15/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | New Feature | Priority: | Major |
Reporter: | Heiko | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I am trying to iterate over a polling join for getting data from a database, as described in the userguide. However, when I invoke the iterator API on it fails with the following exception: java.lang.ArrayIndexOutOfBoundsException: 0 Here's an example statement: String epl = "insert into NewQuotes" + Quotes is a really simple stockquote schema. There is another unit test that uses the exact same esper instance and successfully joins data into a stream. |
Comments |
Comment by Heiko [ 15/Jun/08 ] |
I've tried both creating an Iterator directly on the statement that was create through EPAdministrator.createEPL(epl) and adding a StatementAwareUpdateListener, which then creates the iterator when being updated. Both tests fail with the same exception. |
Comment by Thomas Bernhardt [ 17/Jun/08 ] |
We do not have support in Esper 2.1 for polling (iterating) over join statements in which one stream is a polling execution (database or method). We'll add the limitation to the documentation which is not clear on this subject. Assigned to release 2.2 |
Comment by Thomas Bernhardt [ 15/Jul/08 ] |
In branch 2.2 enhancements |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-253] target source_zip is zipping esper source files instead of esperio Created: 11/Jun/08 Updated: 15/Aug/08 Resolved: 15/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 2.2 |
Fix Version/s: | 2.2 |
Type: | Bug | Priority: | Trivial |
Reporter: | sbailliez@gmail.com | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Looking at In the target source_zip the last zipfileset is selecting esper source tree instead of esperio, so the line <zipfileset prefix="$ {name}-${version}/esperio/src/main/java" dir="esper/src/main/java" includes="**"/>should be: <zipfileset prefix="${name} -$ {version}/esperio/src/main/java" dir="esperio/src/main/java" includes="**"/> |
Comments |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
Fixed the ant task |
[ESPER-252] Package source code as jar files in distribution Created: 11/Jun/08 Updated: 15/Aug/08 Resolved: 15/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Wish | Priority: | Trivial |
Reporter: | sbailliez@gmail.com | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Would you mind packaging the source code for esper and esperio as part of the distribution. I put all 3rd party libraries into an ivy repository which contains jars and source code as jar file as well, source code is not shipped as is, so it's a bit of pain to having to checkout the release tag and jar the sources. thanks. |
Comments |
Comment by Alexandre Vasseur [ 11/Jun/08 ] |
we want to keep the dist small |
Comment by sbailliez@gmail.com [ 12/Jun/08 ] |
no relation with ivy, I was just giving an example of what I do with 3rd party libs. I have over hundred 3rd party libs in our repository and esper is the only one where sources are not immediately available either within the distrib or within another source distrib and where I have to do a checkout of the sources. it's not the end of the world which is why I opened the jira as 'wish' but it stands apart on that. |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
Added to distribution directory and to release guides, link to be added to site |
[ESPER-251] Named window with underlying event as a property and insert-into from pattern requires self-property in select clause Created: 07/Jun/08 Updated: 11/Feb/09 Resolved: 18/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.2 |
Fix Version/s: | 3.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Here's the window creation : The insert-into does not detected that the inserted-into stream contains the underlying rather then the transposed event and an exception is thrown: com.espertech.esper.client.EPStatementException: Error starting view: Event type named 'Alert7Window' has already been declared with differing column name or type information [insert into Alert7Window select '7' as alertId, stream0.quote as this from pattern [(every quote=SupportBean) where timer:within(1 days)].std:lastevent() stream0, pattern [(every index=SupportBean) where timer:within(1 days)].std:lastevent() stream1 where stream0.quote.intPrimitive > stream1.index.intPrimitive] The problem was introduced with Esper 2.1 in the form of http://jira.codehaus.org/browse/ESPER-204 The workaround is to use : |
Comments |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
Release 2.3 provides better error messages however remains to require the workaround, assigned to 3.0 |
Comment by Thomas Bernhardt [ 18/Dec/08 ] |
in major300 branch |
[ESPER-250] Custom aggregation function provided by static inner class not possible Created: 05/Jun/08 Updated: 15/Aug/08 Resolved: 27/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'm implementing some aggregation function classes as static inner classes. Unfortunately these are not accepted by esper because of some regex test which rejects names containing '$'. I'll work around this, but wanted to report this unnecessary restriction. Searching the code this seems to be in the 2.0 codebase as well. Thanks, .charlie Exception in thread "main" net.esper.client.ConfigurationException: Error configuring engine: Invalid class name for aggregation 'Utils.RangeAggregation$Sum' at net.esper.core.EPServicesContextFactoryDefault.makeEngineImportService(EPServicesContextFactoryDefault.java:217) at net.esper.core.EPServicesContextFactoryDefault.createServicesContext(EPServicesContextFactoryDefault.java:50) at net.esper.core.EPServiceProviderImpl.initialize(EPServiceProviderImpl.java:186) at net.esper.core.EPServiceProviderImpl.<init>(EPServiceProviderImpl.java:42) at net.esper.client.EPServiceProviderManager.getProvider(EPServiceProviderManager.java:72) at com.ml.ets.apptk.services.esper.EsperEngine.<init>(EsperEngine.java:38) at Utils.main(Utils.java:98) Caused by: net.esper.eql.core.EngineImportException: Invalid class name for aggregation 'qsa.utils.RangeAggregation$Sum' at net.esper.eql.core.EngineImportServiceImpl.addAggregation(EngineImportServiceImpl.java:74) at net.esper.core.EPServicesContextFactoryDefault.makeEngineImportService(EPServicesContextFactoryDefault.java:212) ... 8 more |
Comments |
Comment by Thomas Bernhardt [ 05/Jun/08 ] |
Workaround is to not use a static inner class. Assigned to 2.2 release |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-249] Enhance TimeBatchView with FORCE_UPDATE, START_EAGER keywords Created: 31/May/08 Updated: 15/Aug/08 Resolved: 06/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP SP2, Sun Java 6 |
Attachments: | timeBatch.keywords.patch |
Number of attachments : | 1 |
Description |
Patch to add FORCE_UPDATE, START_EAGER keywords to TimeBatchView (they were already implemented in TimeLengthBatchView). Also implemented in TimeBatchViewRStream. This is a pretty straightforward change. In order to de-duplicate TimeBatchViewFactory and TimeLengthBatchViewFactory I moved common parameter processing functionality into a new subclass - TimeBatchViewFactoryParams |
Comments |
Comment by Thomas Bernhardt [ 31/May/08 ] |
Assigned for adding to 2.2 |
Comment by Thomas Bernhardt [ 06/Aug/08 ] |
in release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-248] Syntax for repeated matching until end of pattern detection Created: 22/May/08 Updated: 15/Aug/08 Resolved: 15/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-2.1.0-JIRA248.jar |
Number of attachments : | 1 |
Description |
(read bottom to top) We might want to add both minimum and maximum boundaries for both time and number of events (as discussed in the "multiple case accumulating query" thread). Maybe we could write I guess we can keep the timer:within guard to handle the time (we might want to add it a minimum time ie timer:within(minTime, maxTime). ==== The repeat match until looks quite good to me. The synopsis could indeed be A very interesting feature would be to specify the maximum (and/or minimum?) time between each event, eg Another feature could also be to specify the maximum (and/or minimum?) number of A events. As for how to write an observer, it would help to add an example that filters events, because the at and interval observers only work on a timer, and the MyFileExistsObserver sample only check for a file existence. ===== This sounds like a "repeat match until" situation. A syntax could make life easier, I agree. We could allow to write: That seems like a nice concise syntax. The synopsis would be: Thus one could also write: ==== the custom plug-in observer would certainly for work for this, ok i'll look closely at the custom observer to see how to do this. and so would simply repeating the followed-by, such as B-> ( (T0 -> E) or (T0 -> T1 -> E) or ...repeated for Tn...) Indeed it would work, but it's not very practical. Also we might have something more complex than just "-> E" so we might need to write B -> ((T -> E -> F -> ... -> Z) or (T -> T -> E -> F -> ... -> Z) or ...) I don't think the suggested syntax as below is good as it seems to conflict with filter syntax. We could add a syntax to the pattern language to make such a case easier to address if there is need. I totally agree that the way I wrote it is quite confusing. We might write it like guards and windows, something like it sounds to me that if you keep a state flag in your listener, you can easily select all B E and T with 3 "select * from X" statements bind those 3 to the same listener, and switch on/off the flag in the listener. I don't see the value add in adding things in the EPL unless there is some more correllation or filtering. I agree it might be possible to write a specific query, but if we have several complex queries, that may use several times a sequence of events like that, it really becomes a mess to write. |
Comments |
Comment by Thomas Bernhardt [ 24/May/08 ] |
If we have For example match from 2 to 5 (a=A -> d=D) until b=B That way we'd always be able to know which events have been used by a rule. |
Comment by Thomas Bernhardt [ 30/May/08 ] |
An additional suggestion has come in: If that would be a regexp with + and * wildcards that would look something like A -> B+ |
Comment by Alexandre Vasseur [ 30/May/08 ] |
Could also be ie a custom accumulator |
Comment by Henning Störk [ 05/Jun/08 ] |
Personally I'd really like to be able to use expressions like this: I could totally live with |
Comment by Thomas Bernhardt [ 05/Jun/08 ] |
The regular expression and the .repeat:count() syntax both suffer from not providing an explicit boundary to the repeating expression, while the "match..until" proposal does. For example, the expression "A.repeat.count(2,5)" or "A+[2,5]" does not make sense as its undefined whether the pattern should fire after 2, 3, 4 or 5 events (unbound case). Only in the case of "A.repeat.count(2)" or "A+[2,2]" would the pattern alone make sense since now the boundary is well defined and the pattern fires only if exactly 2 occurances of A happened. The "match..until" appears more natural: // match any number of A for 10 seconds // match A until B occurs // match exactly 5 A (until not allowed since bound to 5 occurances) // match at least 2 A until B occurs // match between 2 and 5 A until B occurs // match A until B occurs but only within 1 minute from the start of the statement // match A until no A arrives within 1 minute (A and B stand for any other expession in above examples) |
Comment by Thomas Bernhardt [ 07/Jun/08 ] |
The range matches needed to be clarified. The new notation (replacing from/to) is: // this expression turns true when expression A turned true at least twice, and only thereafter expression B turns true // this expression turns true when expression A turned true 5 times // this expression turns true when expression B turns true // this expression turns true when expression A turned true at least twice, and only thereafter expression B turns true ...wherein A and B are any sub-expressions |
Comment by Thomas Bernhardt [ 12/Jun/08 ] |
We have made a preview of this feature available for comments: |
Comment by Thomas Bernhardt [ 15/Jul/08 ] |
In release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-247] Cast function for String to Int conversion returns null Created: 22/May/08 Updated: 15/Aug/08 Resolved: 02/Jun/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-2.1.0-JIRA247.jar |
Number of attachments : | 1 |
Description |
I've created properties for the map event I will be using: properties.put("SIZE", "string"); my EPL statement is very simple: stmt = "select SIZE, cast(SIZE,int) as test from md"; My listener is printing out the details: and the cast always returns null: package cep; public EventProcessor() { HashMap map = new HashMap(); map.put("SIZE",String.class); Configuration config = new Configuration(); config.addEventTypeAlias("md", map); epService = EPServiceProviderManager.getDefaultProvider(config); admin = epService.getEPAdministrator(); String stmt = "select SIZE, cast(SIZE, int) as test from md"; statement = admin.createEPL(stmt); statement.addListener(new Listen()); }public void sendEvent(HashMap map) { epService.getEPRuntime().sendEvent(map, "md"); }} package cep; public class Listen implements UpdateListener{ public void update(EventBean[] x, EventBean[] y) { System.out.println("Event Type :" + x[0].getEventType()); System.out.println("Size :" + x[0].get("SIZE")); System.out.println("Test :" + x[0].get("test")); }} |
Comments |
Comment by Thomas Bernhardt [ 24/May/08 ] |
Assigned to 2.2 |
Comment by Thomas Bernhardt [ 02/Jun/08 ] |
Cumulative service pack patch attached which patches this issue. Changelog is: esper-2.1.0-JIRA247 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-246] Unique-view incorrectly posts remove stream data for shared state under view sharing conditions Created: 21/May/08 Updated: 15/Aug/08 Resolved: 21/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-2.1.0-JIRA246.jar |
Number of attachments : | 1 |
Description |
If a query likes following is registered: If the oldEvent object in the 1st query also satisfies the 2nd query, then the oldEvent object of 2nd query is the same as that in the 1st query, even thought the old event was sent before the 2nd query is registered. |
Comments |
Comment by Thomas Bernhardt [ 21/May/08 ] |
The problem is due to Esper sharing views between statements for efficient processing, and the decision to share the view is made incorrectly in this case. Cumulative service pack jar to be posted shortly. |
Comment by Thomas Bernhardt [ 21/May/08 ] |
One workaround is turn turn off view sharing, a global setting available via configuration - engine settings. |
Comment by Thomas Bernhardt [ 21/May/08 ] |
Cumulative service pack fixes the following issues: |
Comment by Thomas Bernhardt [ 21/May/08 ] |
Note that this problem exhibits only if event type alias and filter are the same between two or more statements, and only for the std:unique view. |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-245] Allow Map type definition to take type name in addition to type Created: 19/May/08 Updated: 27/Jul/08 Resolved: 27/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hi I'm new to the product and have a really simple question that I cannot seem to figure out. I've created properties for the map event I will be using: properties.put("SIZE", "string"); my EPL statement is very simple: stmt = "select SIZE, cast(SIZE,int) as test from md"; My listener is printing out the details: and the cast always returns null: Event Type :MapEventType typeName=03b2c568c0a8016a00349471ad4fc6b7 propertyNames=[test, SIZE] |
Comments |
Comment by Thomas Bernhardt [ 19/May/08 ] |
the addEventTypeAlias method takes Map<String, Class>, so put("SIZE", String.class) would be more appropriate. |
Comment by Thomas Bernhardt [ 27/Jul/08 ] |
Feature already pesent |
Comment by Thomas Bernhardt [ 27/Jul/08 ] |
Cast function problem with JIRA 247 |
[ESPER-244] EPServiceProviderManager.getProviderURIs should return Set<String>, why array? Created: 18/May/08 Updated: 24/May/08 Resolved: 24/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.1 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently EPServiceProviderManager.getProviderURIs returns a String array, which isn't too easy to work with (no Collection semantics). Better to return a Set<String> (but wrapping it with Collections.unmodifiableSet). |
Comments |
Comment by Thomas Bernhardt [ 24/May/08 ] |
String[] is less confusing as a null value is possible for default providers. In sets one typically doesn't expect one. |
[ESPER-243] Swallowing InterruptedException in EPServiceProviderImpl Created: 18/May/08 Updated: 15/Aug/08 Resolved: 06/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Bug | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
try The catch should have: // Restore the interrupted status |
Comments |
Comment by Thomas Bernhardt [ 06/Aug/08 ] |
in release 2.2 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-242] EPServiceProviderManager runtimes should be ConcurrentHashMap Created: 18/May/08 Updated: 15/Aug/08 Resolved: 06/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently using Collections.synchronizedMap(new HashMap<String, EPServiceProviderImpl>()) which is suboptimal. |
Comments |
Comment by Thomas Bernhardt [ 06/Aug/08 ] |
in release 2.2 |
Comment by Mathias Bogaert [ 06/Aug/08 ] |
You also need to use the putIfAbsent: see http://dmy999.com/article/34/correct-use-of-concurrenthashmap |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-241] Predefined variant types not supporting dynamic event types Created: 18/May/08 Updated: 15/Aug/08 Resolved: 18/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | Bug | Priority: | Critical |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-2.1.0-JIRA241.jar |
Number of attachments : | 1 |
Description |
VAEVariantProcessor.validateEventType does not account for dynamically registered event types such as Map events. I'm not too sure about this, since I'm receiving no exception on my first registered variant type, but the second one always throws EPStatementException: Error starting view with the message from VAEVariantProcessor. |
Comments |
Comment by Thomas Bernhardt [ 18/May/08 ] |
Could you please provide a sequence of actions to reproduce this error, or perhaps a unit test? |
Comment by Mathias Bogaert [ 18/May/08 ] |
Example: Map<String, Class> types = new HashMap<String, Class>(); ConfigurationVariantStream variant = new ConfigurationVariantStream(); epService.getEPAdministrator().createEPL("insert into MyVariant select * from MyEvent"); gives com.espertech.esper.client.EPStatementException: Error starting view: Selected event type is not a valid event type of the variant stream 'MyVariant' [insert into MyVariant select * from MySecondEvent] |
Comment by Thomas Bernhardt [ 18/May/08 ] |
To attach bug fix patch. |
Comment by Thomas Bernhardt [ 18/May/08 ] |
Attached patch esper-2.1.0-JIRA241 fixes this issue. |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-240] Output limit clause to support absolute crontab-like times Created: 17/May/08 Updated: 15/Aug/08 Resolved: 17/Jul/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.2 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I currently have a statement, which I limit to fire every 30 minutes, But I would rather prefer it to hit at certain times of the day (e.g. So basically the same syntax, you already use for the timer:at observer. |
Comments |
Comment by Thomas Bernhardt [ 17/May/08 ] |
As a workaround, it's possible to use a variable for the output rate limiting, therefore the on-set could be used to temporarily bump the output clause, something like: |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-239] esperio - memory leak in AdapterCoordinatorImpl Created: 16/May/08 Updated: 15/Aug/08 Resolved: 17/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Allan Richards | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esperio-2.1.0-JIRA239.jar |
Number of attachments : | 1 |
Description |
I have been hitting memory limits when using large input files. Have tracked this down to esperio maintaining a copy of all input events in the map AdapterCoordinatorImpl::eventsFromAdapters. It is not clear to me that this is required. Suggest changing replaceFirstEventToSend as below: protected void replaceFirstEventToSend() { log.debug(".replaceFirstEventToSend"); SendableEvent event = eventsToSend.first(); eventsToSend.remove(event); addNewEvent(eventsFromAdapters.get(event)); eventsFromAdapters.remove(event); // <-- remove the sent event from eventsFromAdapters pollEmptyAdapters(); }Jerry has run this change through the esperio test suit and it passes. |
Comments |
Comment by Allan Richards [ 16/May/08 ] |
..and now with improved formatting: protected void replaceFirstEventToSend() { log.debug(".replaceFirstEventToSend"); SendableEvent event = eventsToSend.first(); eventsToSend.remove(event); addNewEvent(eventsFromAdapters.get(event)); eventsFromAdapters.remove(event); pollEmptyAdapters(); } |
Comment by Jerry Shea [ 17/May/08 ] |
This is actually the root cause of why debug log statements ( |
Comment by Thomas Bernhardt [ 17/May/08 ] |
Thanks for the bug fix! The JIRA patch file esper-2.1.0-JIRA239 attached contains the change. |
Comment by Thomas Bernhardt [ 18/May/08 ] |
Renamed to esperio-2.1.0-JIRA239 |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-238] Custom view returning null event not caught. Created: 15/May/08 Updated: 17/May/08 Resolved: 17/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Allan Richards | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When a custom view's update is naughty and does this: The esper engine is likely to blow up, as below: Suggest that this situation should be caught in the WrapperEventBean constructor, e.g.: this.event = event; |
Comments |
Comment by Thomas Bernhardt [ 17/May/08 ] |
Such additional checks for null values reduce performance. It is part of the explicit contract of plug-in views to not produce null values in an array, we'll add to the documentation. |
[ESPER-237] Duplicate debug log statement Created: 02/May/08 Updated: 11/May/08 Resolved: 05/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When enabling debug logging, I get: 09:59:23.421 [main] DEBUG c.e.esper.client.Configuration - configuring from resource: /esper.cfg.xml |
Comments |
Comment by Thomas Bernhardt [ 02/May/08 ] |
for 2.1 |
Comment by Alexandre Vasseur [ 05/May/08 ] |
fixed |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-236] Patterns should support getUnderlying() Created: 02/May/08 Updated: 02/May/08 Resolved: 02/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Not A Bug | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When using 'select * from ...' one can use newEvents[0].getUnderlying() to obtain the event instance. Not so for patterns. My code: epService.getEPAdministrator().createPattern("every UfPlantSample").addListener(new OpenEntityManagerUpdateListener() { }); Here, the getUnderlying() returns an empty map, while I was expecting the event instance. |
Comments |
Comment by Thomas Bernhardt [ 02/May/08 ] |
If you assign a tag to the event then that is used to populate the map, i.e. "every u=UfPlantSample" and the underlying is a map with a "u" key and underlying value. |
[ESPER-235] ConfigurationOperations to provide a method to check if an alias exists Created: 28/Apr/08 Updated: 11/May/08 Resolved: 05/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | New Feature | Priority: | Critical |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The Configuration class uses HashMap and ArrayList implementations, that are not thread-safe. In my case, we're dynamically registering map events upon receiving specific data. So ((EPServiceProviderSPI) epService).getConfigurationInformation().getEventTypesMapEvents().containsKey(...) breaks while another thread is adding adding event aliases. |
Comments |
Comment by Mathias Bogaert [ 29/Apr/08 ] |
It seems my understanding of the Configuration was wrong. "Note that Configuration is meant only as an initialization-time object. The Esper engine represented by an EPServiceProvider does not retain any association back to the Configuration." Seems like I need to use the ConfigurationOperations to add and check for types. epService.getEPAdministrator().getConfiguration().getEventTypesNestableMapEvents().containsKey(...) |
Comment by Thomas Bernhardt [ 29/Apr/08 ] |
Yes ConfigurationOperations is designed for runtime use and is the one we would want to extend with a new capability. I'll change the JIRA from bug to improvement and assign to 2.1. Do you need a method added that can check if an alias already exists, such as (on ConfigurationOperations) or is there type information you are also looking to retrieve from ConfigurationOperations? |
Comment by Mathias Bogaert [ 29/Apr/08 ] |
Such a method would be handy, and perhaps would even check against any possible type - class, map, nested map or node? In my case I only need to check if the alias is added for that EPServiceProvider, and if not, add it. Is this thread-safe? |
Comment by Mathias Bogaert [ 29/Apr/08 ] |
Or to align with the other methods: boolean eventTypeAliasExists(String eventTypeAlias) |
Comment by Mathias Bogaert [ 30/Apr/08 ] |
Or: boolean isEventTypeAliased(String eventTypeAlias) |
Comment by Thomas Bernhardt [ 30/Apr/08 ] |
Yes the method returns true for any alias, regardless of underlying event type. |
Comment by Alexandre Vasseur [ 05/May/08 ] |
implemented |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-233] engine destroy should trigger destroy of plugins Created: 24/Apr/08 Updated: 24/Apr/08 Resolved: 24/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Alexandre Vasseur |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
engine destroy should trigger destroy of plugins |
[ESPER-232] EPStatement should expose isPattern Created: 24/Apr/08 Updated: 24/Apr/08 Resolved: 24/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Alexandre Vasseur |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EPStatement should expose isPattern |
[ESPER-231] EPRuntime stats reset and switch to long Created: 24/Apr/08 Updated: 24/Apr/08 Resolved: 24/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Alexandre Vasseur |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EPRuntime stats should support reset and use long rather than int |
[ESPER-230] case insensitivity option when matching property values Created: 17/Apr/08 Updated: 22/Apr/08 Resolved: 22/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Scott Frenkiel | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
We want to be able to match events without regard to case, so that a statement like "select * from event where prop1 = 'something'" would match when prop1's value was 'SOMETHING', for example. I tried to do this using the regexp keyword, something like this: "select * from event where prop1 regexp '(?i)something'". This works, but unless I'm missing something the regexp keyword can't be used against a list of values (using 'IN'). This is probably fine; regexp against an IN list may be overkill anyway. Is there any other option for specifying case-insensitivity? |
Comments |
Comment by Thomas Bernhardt [ 18/Apr/08 ] |
The option provided for POJO events is described in this doc section: Is there anything that the POJO support for case sensitivity doesn't provide? |
Comment by Scott Frenkiel [ 20/Apr/08 ] |
I should have been more clear--our system builds up EQL statements based on information collected from our end users. I was looking for a way to provide them the option for case sensitivity on a statement-by-statement basis. |
Comment by Alexandre Vasseur [ 20/Apr/08 ] |
Can you use a user defined function for insensitive equal matching? or maybe use the statement object model to post process your statements constants in such cases? |
Comment by Scott Frenkiel [ 20/Apr/08 ] |
Thanks, a user-defined function might work. I assume this would have to be a two argument boolean function, something like "func(x,y)" to replace "x = y". I'm not familiar with the statement object model, but it seems like that might be overkill just for case insensitivity. |
Comment by Thomas Bernhardt [ 22/Apr/08 ] |
A further option is to have your event object return String.toUpperCase() |
[ESPER-229] MismatchedTokenException when creating statement "select count(*) as count from foo" Created: 14/Apr/08 Updated: 11/May/08 Resolved: 23/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Trivial |
Reporter: | sbailliez@gmail.com | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Creating a statement with 'count' as a variable seems to lose completely the parser. Obvious workaround is to use something else than count for the variable. MismatchedTokenException(25!=183) at com.espertech.esper.epl.generated.EsperEPL2GrammarParser.mismatch(EsperEPL2GrammarParser.java:415) at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:99) at com.espertech.esper.epl.generated.EsperEPL2GrammarParser.selectionListElement(EsperEPL2GrammarParser.java:4686) at com.espertech.esper.epl.generated.EsperEPL2GrammarParser.selectionList(EsperEPL2GrammarParser.java:4451) at com.espertech.esper.epl.generated.EsperEPL2GrammarParser.selectClause(EsperEPL2GrammarParser.java:4362) at com.espertech.esper.epl.generated.EsperEPL2GrammarParser.selectExpr(EsperEPL2GrammarParser.java:1509) at com.espertech.esper.epl.generated.EsperEPL2GrammarParser.eplExpression(EsperEPL2GrammarParser.java:1360) at com.espertech.esper.epl.generated.EsperEPL2GrammarParser.startEPLExpressionRule(EsperEPL2GrammarParser.java:508) at com.espertech.esper.core.EPAdministratorImpl$3.invokeParseRule(EPAdministratorImpl.java:58) at com.espertech.esper.epl.parse.ParseHelper.parse(ParseHelper.java:105) at com.espertech.esper.core.EPAdministratorImpl.compileEPL(EPAdministratorImpl.java:256) at com.espertech.esper.core.EPAdministratorImpl.createEPLStmt(EPAdministratorImpl.java:121) at com.espertech.esper.core.EPAdministratorImpl.createEPL(EPAdministratorImpl.java:103) |
Comments |
Comment by Thomas Bernhardt [ 15/Apr/08 ] |
Assigned to 2.1 |
Comment by Thomas Bernhardt [ 15/Apr/08 ] |
The "count" keyword is a reserved keyword. Also see JIRA |
Comment by sbailliez@gmail.com [ 15/Apr/08 ] |
ok. before opening the bug I scanned quickly the user guide looking for 'reserved' to see if I could find something related to it but did not find anything. |
Comment by Thomas Bernhardt [ 23/Apr/08 ] |
in enhancement210 branch |
Comment by Thomas Bernhardt [ 23/Apr/08 ] |
The reserved keywords are now also in an appendix in the doc; certain keywords (built-in functions and such) can now be used as event property names |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-228] PDF document page number not showing Created: 11/Apr/08 Updated: 11/May/08 Resolved: 16/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-227] No documentation on time-batch view parameter for reference point Created: 10/Apr/08 Updated: 11/May/08 Resolved: 17/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
the "win:time_batch" view takes a second parameter which is a long-value and that is the reference point for when the batch should end/start. The documentation does not document this features, I have created a JIRA. For reference, see test com.espertech.esper.regression.view.TestViewTimeInterval method testTimeBatchRefPoint |
Comments |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-226] Allow esperio to use external timer Created: 10/Apr/08 Updated: 11/May/08 Resolved: 13/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | New Feature | Priority: | Major |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP SP2, Sun JDK 6 |
Attachments: | externalTimer.patch |
Testcase included: | yes |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
If you specify a timestampColumn to esperio then currently esperio sends all events in "real time" i.e. if an input file contains the following data: timestamp name then esperio will sleep for 1001 milliseconds between sending the David and Julie events to the engine. This patch allows esperio to run through the file at full speed without pausing. The algorithm I have used sends a time event for the last time when the current time changes. In this example it will send a time event for 2 after Jerry, for 3 after David and 1004 after Julie. Have added a new method setUsingExternalTimer(boolean) to all the places where setUsingEngineThread currently is and have modified AbstractCoordinatedAdapter.sendSoonestEvents to actually do the heavy lifting. For many of my use cases this makes a huge performance improvement. This patch might need a little more work - for example, I guess that usingExternalTimer=true is incompatible with usingEngineThread=true and that I should throw an exception if both are set? Any comments? |
Comments |
Comment by Thomas Bernhardt [ 13/Apr/08 ] |
Applied to branch enhancements210_con |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-225] Esper rated #2 by Enerjy code inspection tool among OSS projects - see if it can get #1 Created: 08/Apr/08 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.2 |
Fix Version/s: | 3.2 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Which open source Java projects are least likely to break down? Below are the top ten, ranked by their Enerjy Score. |
Comments |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
[ESPER-224] Support for Streaming XML using Apache Axiom Created: 08/Apr/08 Updated: 11/May/08 Resolved: 22/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 2.1 |
Type: | New Feature | Priority: | Major |
Reporter: | Paul Fremantle | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-trunk.patch |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
This patch (on the trunk from a couple of weeks ago) provides the ability for Esper to use the Apache Axiom XML library. Axiom provides a DOM-like tree view, including XPath, but still supports Streaming behaviour via the StAX API. The benefit of this is that it will only parse enough of the message/event to evaluate the required XPaths. Some tests that one of my colleagues (Sanka) did have shown a big speedup compared to DOM. Let me know if this needs updating to the latest trunk. |
Comments |
Comment by Thomas Bernhardt [ 22/Apr/08 ] |
In branch enhancements210 as plug-in event representation, with in esper and esperio jars |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-223] Escape syntax for event property names that contain dots Created: 05/Apr/08 Updated: 11/May/08 Resolved: 16/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
But someone recently asked regarding dots in property names also. (I also think this was Sharad's original question.) I know allowing dots in property names would conflict with the syntax that allows chaining bean gets, XML elements, maps, etc. For example: select s1.id1, s1.trinity.event\.event_type ... if the ESPTestEvent had a chain of maps so that it would eventually call |
Comments |
Comment by Thomas Bernhardt [ 16/Apr/08 ] |
Change made in enhancements210 branch |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-222] Outer joins do not preserve order Created: 02/Apr/08 Updated: 24/May/08 Resolved: 24/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.0 |
Fix Version/s: | None |
Type: | New Feature | Priority: | Major |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XPSP2, Sun Java 1.6.0 |
Attachments: | preserveJoinOrder.patch |
Testcase included: | yes |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
If I am outer joining 2 event streams as below:
I reckon that joins should preserve the order of the underlying streams. Fortunately this looks like it is easily doable simply by changing HashSet (which makes no guarantees about order) to LinkedHashSet (which does) in UnindexedEventTable and PropertyIndexedEventTable. I've modified TestTableOuterLookupExecNode to check that order is enforced. Against 210_con branch, all tests pass after this patch that passed before. |
Comments |
Comment by Jerry Shea [ 02/Apr/08 ] |
Woops JIRA has reformatted some of my test. If I am outer joining 2 event streams as below: A: a1 Hope this makes sense |
Comment by Thomas Bernhardt [ 02/Apr/08 ] |
Joins do not preserve the order of events in each stream, not a guarantee the engine makes. |
Comment by Jerry Shea [ 03/Apr/08 ] |
But don't you think this is a useful feature? I'm happy for this issue to be changed from a bug to an enhancement but feel very strongly that this is an extremely useful feature. It is one that I use. We could always parameterise it I guess? |
Comment by Thomas Bernhardt [ 03/Apr/08 ] |
Why not use order-by? I don't think we should make hard guarantees in a join/outer join about the order. In an N-stream join all streams are equal: The order in which streams are listed does and should not matter. Join execution order is up to the query plan optimizer. Any order obtained in incidental and the order-by clause must be used to guarantee an order. I think the documentation is missing a statement on this topic. |
Comment by Thomas Bernhardt [ 03/Apr/08 ] |
Updated to "new feature" |
Comment by Jerry Shea [ 03/Apr/08 ] |
I agree that the order that streams are listed should not matter, and I don't want to change this. My point is simply that, the current join processing takes events in in a their arrival order and, by putting them into a HashSet, loses that order. Later on when the join results are generated in TableOuterLookupExecNode, the HashSet is iterated through and results given back. By using LinkedHashSet instead of HashSet we don't lose the event ordering in the first place. I could use order-by but my events were initially in order |
Comment by Thomas Bernhardt [ 05/Apr/08 ] |
Hmm, we can attempt to guarantee order of arrival but I think its not a hard guarantee we could make. This is because events can arrive into either streams at the same time (self-joins and pattern-joins). I'd prefer to add a setting, since a LinkedHashMap has a higher overhead. This could be a statement-level setting, I wonder if we should look for a way to allow statement-level settings like this one. Else an engine-wide setting. |
Comment by Jerry Shea [ 09/Apr/08 ] |
Yes, LInkedHashMap does have a higher overhead but I reckon it's a price worth paying - personally I would vote to make the change anyway and worry about parameterisation later. I'l start a discussion on dev list re: parameterisation. |
Comment by Alexandre Vasseur [ 10/Apr/08 ] |
I don't favor parameterisation at engine level as this would open for different observed behavior in simple scenarios. We' d either have to handle this as a statement property (but then as Tom describes it seems an order by provides better explicit consistency ), or document this better and leave it as it is. |
Comment by Thomas Bernhardt [ 24/May/08 ] |
The fact that joins don't guarantee order is documented in the order-by section. Since there is a performance penalty of a LinkedHashMap versus HashMap, and since setting a proposed engine-global flag would still not guarantee order for all joins, we remain to recommend order-by or a listener/subscriber code that does not rely on order. Closed and won't fix. |
[ESPER-221] Named window with batch expiry policy causes late consumers to post incorrect data or throw IllegalArgumentException Created: 31/Mar/08 Updated: 11/May/08 Resolved: 31/Mar/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-2.0.0-JIRA221.jar |
Number of attachments : | 1 |
Description |
The problem manifests itself when a batching expiry policy is used for named windows, and a consuming statement is created upon the named window and the named window is already filled with data. For example: In the case of (2a), the sum will incorrectly reflect the batched events in the named window twice. In the case of (2b), the following exception can be observed: java.lang.IllegalArgumentException: Event already in index, event=MapEventBean eventType=MapEventType typeName=view_MapStream1 propertyNames=[Price, Line, State, City, Quantity] |
Comments |
Comment by Thomas Bernhardt [ 31/Mar/08 ] |
Resolved, attached jar patch is cumulative and includes the following bug fixed:
|
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-220] TimeBatchView.computeWaitMSec can give incorrect results for low "interval" Created: 30/Mar/08 Updated: 11/May/08 Resolved: 13/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Major |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP2, Sun JDK1.6.0.2 |
Attachments: | computeWaitMSec.patch |
Number of attachments : | 1 |
Description |
TimeBatchView.computeWaitMSec is giving me incorrect results with some combinations of input data: Given the input data: current=82201355, reference=0, interval=1, the following expression: I believe that forcing a float ("1f") into the calculation is causing a loss of precision, and affecting accuracy. Replacing "1f" above with "1d", or alternatively, replacing the expression with: |
Comments |
Comment by Jerry Shea [ 02/Apr/08 ] |
Patch attached. Using the 210_con branch I get the same tests failing after as before: test5DefaultNoHavingNoJoin(com.espertech.esper.regression.view.TestOutputLimit |
Comment by Thomas Bernhardt [ 09/Apr/08 ] |
Assigned to 2.1; Will be added to branch soon for merge into 2.1 release from trunk |
Comment by Thomas Bernhardt [ 13/Apr/08 ] |
Merged into enhancements210_con branch; Could not reproduce any trouble reported with regression test |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-219] Documentation for plug-in views not specifying implicit contract towards object references Created: 30/Mar/08 Updated: 11/May/08 Resolved: 30/Mar/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.0 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The documentation for plug-in views omits the following information: Custom views that post events to the insert stream must post unique EventBean object references as insert stream events, and cannot post the same EventBean object reference multiple times. The underlying event posted by such view can be the same, however the EventBean wrapper generated by the custom view must be unique for each insert stream event. Further to clarify, event posted as remove stream must be the same object reference as the events posted as insert stream by the view. The documentation mistakingly states that remove stream events must only be semantically equal and that is wrong. The requirement is that remove stream events by the view (the EventBean instances, does not affect the underlying representation) must be reference-equal to insert stream events posted by the view. The reason for this behavior is that an observation is unique and should not be made multiple times. The values of the observation can be the same, thus the underlying representation of an event can be reused, however the EventBean reference represents an observation that should be unique and posted only once in the insert stream and once in the remove stream. The "trend" sample view also does not correctly post remove stream events. |
Comments |
Comment by Thomas Bernhardt [ 30/Mar/08 ] |
Documentation update posted to site |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-218] Escape for EPL identifiers that are literals Created: 28/Mar/08 Updated: 11/May/08 Resolved: 23/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
While attempting to do the following query I discovered that there is no escape logic. select last.price from summary Well, last is a literal so while it matches the IDENT token in the grammar it subsequently matches a literal. Should we consider adding select [last].price from summary |
Comments |
Comment by Thomas Bernhardt [ 23/Apr/08 ] |
This is related to Research shows that support for escape logic very much differs between SQL-based languages, sometimes there is no support, sometimes quoted and sometimes {keyword}. The sprit of this issue is resolved by the changes for Esper-229, which we take as support for certain keywords. |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-217] Allow expressions as view parameters Created: 28/Mar/08 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Is it possible to easily drive an ext_timed window where the timestamp What I found is that even after I converted to milliseconds, the window insert into TempEvent select property1, property2, cast(timestamp, long) select property1, property2, timestamp from which works but requires me to generate an intermediate map event for each |
Comments |
Comment by Thomas Bernhardt [ 02/Jan/09 ] |
In release 3.0 |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
[ESPER-216] Provide additional XPath return value types to cast to Created: 28/Mar/08 Updated: 11/May/08 Resolved: 25/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Is it possible to easily drive an ext_timed window where the timestamp What I found is that even after I converted to milliseconds, the window insert into TempEvent select property1, property2, cast(timestamp, long) select property1, property2, timestamp from which works but requires me to generate an intermediate map event for each |
Comments |
Comment by Thomas Bernhardt [ 22/Apr/08 ] |
Assigned to 2.1 |
Comment by Thomas Bernhardt [ 25/Apr/08 ] |
in enhancements210 branch |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-215] Allow access to statement's XPathFactory instance to supply XPathFunctionResolver, etc. Created: 27/Mar/08 Updated: 11/May/08 Resolved: 25/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | New Feature | Priority: | Minor |
Reporter: | John Stoneham | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Running on WinXP, Java 1.6. |
Number of attachments : | 0 |
Description |
In order to use custom (i.e. implemented in Java) XPath functions, it is necessary in Java to access the XPathFactory object being used, to call its setXPathFunctionResolver() method. You pass this method a function resolver, which will be called only for non-built-in XPath functions, and which will mediate calls to custom functions to get them to the right Java implementations. Each statement in Esper creates its own XPathFactory by calling XPathFactory.newInstance(), and these do not appear to be available to the client programmer. Therefore in order to define XPath properties that include custom functions, we were obliged to implement a custom XPathFactory that maintains the default XPathFactory as a singleton inside it and defers all calls to that singleton. That way we could call XPathFactory.newInstance().setXPathFunctionResolver() and have it affect the actual instance that would be used by Esper (since when it created a new instance of the custom factory, all calls would be deferred to the same singleton). The particular use case motivating the use of custom XPath functions was the need to convert an XML dateTime into milliseconds-since-epoch in order to drive an ext_timed window based on the result. The XPath version of this would be very difficult; a code version can be done in two or three lines. |
Comments |
Comment by Thomas Bernhardt [ 28/Mar/08 ] |
I understand you are planning to provide a custom XPathFunctionResolver and XPathVariableResolver resolver to the XPathFactory returned by XPathFactory.netInstance() ? The proposed change to be implemented would add to two fields to ConfigurationEventTypeXMLDOM that would contain the class name of the function and the variable resolver classes. Thus the code would be changed from (after, in essence) // same for variable resolver |
Comment by John Stoneham [ 28/Mar/08 ] |
This would do the trick. An alternative would be to allow the user to provide an instance himself instead of configuring with a classname, in order to do some configuration at runtime perhaps. I don't know if this is feasible within the Esper architecture, not having looked deeply enough. |
Comment by Thomas Bernhardt [ 28/Mar/08 ] |
The XPathFactory abstract class has a protected constructor, thus it doesn't seem feasible for an application to provide it's own implementation of the XPathFactory abstract class. You are referring to the ConfigurationEventTypeXMLDOM to carry an actual instance of XPathFunctionResolver. The configuration contract is that the configuration is Serializable: the preference is to not carry actual service instances in configuration to make it clear that a configuration cannot be modified at runtime other then via the ConfigurationOperations. We could add a function to ConfigurationOperations to inject an actual service instance overall or per event type, would that be preferred? |
Comment by John Stoneham [ 28/Mar/08 ] |
The constructor's protected, not package-private - the XPathFactory class itself carries only the logic for implementing the newInstance() methods. The user is expected to provide a subclass if the default is not used. We implemented our own XPathFactory subclass, for instance, to hold the singleton logic mentioned above. It might be worthwhile to add something to use a different XPathFactory, I have not considered that. It ought not to be necessary, though, as it is already possible to customize the XPathFactory that is created via other means. The ability to use custom XPathFunctionResolver and XPathVariableResolver implementations should be enough to start. If the ConfigurationEventTypeXMLDOM needs to be serializable, then it does make sense to specify a class name instead. However I still think in this case it might be useful to someone to be able to get hold of that Function/VariableResolver in order to downcast it and call setter methods. (I don't have a particular use case in mind, it's simply a flexibility option.) Perhaps the area where the resolver class is actually created is inaccessible, though, based on the architecture. One could always have the created class make callbacks for any data it needs through static methods or something similar, I imagine. |
Comment by Thomas Bernhardt [ 22/Apr/08 ] |
Assigned to 2.1 |
Comment by Thomas Bernhardt [ 25/Apr/08 ] |
in enhancements210 branch |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-214] ClassCastException in named window dispatch for timer thread when multiple insert-into Created: 19/Mar/08 Updated: 11/May/08 Resolved: 19/Mar/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-2.0.0-SP214.jar |
Number of attachments : | 1 |
Description |
This exception can occur when multiple named windows get data from a single timer event advancing time, as a multithread-safety issue. The timer thread continues processing however an event dispatched to consumers of a named window does not get posted. Exception in thread "Timer-0" java.lang.ClassCastException: com.espertech.esper.epl.named.NamedWindowConsumerDispatchUnit |
Comments |
Comment by Thomas Bernhardt [ 19/Mar/08 ] |
Corrected this issue in the attached SP, which is includes the patch to Esper-213 and Esper-209 |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-213] ConcurrentModificationException creating consuming statements to a single named window under threading Created: 14/Mar/08 Updated: 11/May/08 Resolved: 17/Mar/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-2.0.0-SP213a.jar |
Number of attachments : | 1 |
Description |
This problem manifests itself when an application creates statements that consumes from a named window and the named window is also receiving events. It occurs about every 300 new statements for 2 threads if one thread creates statements and a second thread sends events applicable to the named window. The exception is thrown by NamedWindowServiceImpl. |
Comments |
Comment by Thomas Bernhardt [ 14/Mar/08 ] |
Bug fix for release 2.0.0, includes fix for |
Comment by Thomas Bernhardt [ 18/Mar/08 ] |
A user reported the following exception using the bug fix, after running for minutes: java.lang.NullPointerException |
Comment by Thomas Bernhardt [ 18/Mar/08 ] |
Bug fix for release 2.0.0 is attached to this JIRA issue, named "esper-2.0.0-SP213a.jar", includes fix for |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-212] Custom ClassLoader Created: 13/Mar/08 Updated: 11/May/08 Resolved: 17/Mar/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Blocker |
Reporter: | Roger | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Add documentation describing how to use custom class loaders. We are creating classes at runtime using ASM and then writing Esper queries that reference these classes. We get the exception when running this code: 1) testClassLoader(om.mycompany.tests.ClassLoaderTest)com.espertech.esper.client.EPStatementException: Failed to resolve event type: Failed to load class sempra.sif.agents.Speaker [SELECT * FROM sempra.sif.agents.Speaker WHERE Available = false] I found a few references to "custom classloader" in the mailing lists but clicking on the results of a search would not bring up the posting. It is not clear how to check out the source to your 2.0 production release. I see esper/branches/major200/ and prerelease200/. In major200 i see packages named: net.esper.... The prerelease200 package names match the Esper 2.0.0 download but the 'pre' in prerelease200 suggests it is not the production release. Thanks |
Comments |
Comment by Thomas Bernhardt [ 13/Mar/08 ] |
Release 2.0.0 and all prior releases load classes using "Class.forName(...)" We have made the change to the "branches\enhancements210" branch switching all such code to use: The release 2.1.0 will have this change. |
Comment by Thomas Bernhardt [ 13/Mar/08 ] |
Since it's marked as a blocker, please let us know and we may be able to provide a service pack. |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-211] statement iterator is never empty Created: 07/Mar/08 Updated: 11/Mar/08 Resolved: 07/Mar/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Thomas Bernhardt |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
sample code: EPServiceProvider ep = EPServiceProviderManager.getDefaultProvider(); |
Comments |
Comment by Thomas Bernhardt [ 07/Mar/08 ] |
The count should return zero when the data window is not filled, counting events always returns a value, yep |
Comment by Alexandre Vasseur [ 11/Mar/08 ] |
got it |
[ESPER-210] First-event or first N events data window Created: 07/Mar/08 Updated: 15/Aug/08 Resolved: 07/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.2 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The suggestion is to add a std:firstevent data window that captures simply the first N arriving events. |
Comments |
Comment by Thomas Bernhardt [ 07/Mar/08 ] |
Assigned to 2.1 release |
Comment by Thomas Bernhardt [ 22/Apr/08 ] |
Contribution to be received, may make it in 2.1 release but assigned to 2.2 |
Comment by Thomas Bernhardt [ 30/May/08 ] |
Thus the data windows that have been suggested are: |
Comment by Thomas Bernhardt [ 07/Aug/08 ] |
in release 2.2 Here is the summary of the new data windows: First Event First Unique First Length First Time |
Comment by Thomas Bernhardt [ 15/Aug/08 ] |
in release 2.2 |
[ESPER-209] Stop of consumer statements of named windows may not entirely deregister consumer Created: 05/Mar/08 Updated: 11/May/08 Resolved: 14/Mar/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-2.0.0-JIRA209.jar |
Number of attachments : | 1 |
Description |
This problem manifests itself when an application registers multiple statements that consume from the same named window, and subsequently stops or destroys the consuming statements. The deregistration of the consuming statement does not always deregister the consuming view causing slowness when multiple adds and removes are performed. |
Comments |
Comment by Thomas Bernhardt [ 05/Mar/08 ] |
Attached "esper-2.0.0-SP1.jar" to be placed in front of the classpath, to correct this issue. |
Comment by Alexandre Vasseur [ 05/Mar/08 ] |
renamed the patch to a conventional name |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-208] Esperio runs out of stack space when processing largeCSV file and not using engine thread Created: 03/Mar/08 Updated: 11/May/08 Resolved: 18/Mar/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Major |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | stackOverflow.patch |
Patch Submitted: |
Yes
|
Number of attachments : | 1 |
Description |
When you import a large CSV file using esperio and with setUseEngineThread(false) a StackOverflow occurs. This is because AbstractCoordinatedAdapter.continueSendingEvents calls AbstractCoordinatedAdapter.waitToSendEvents which calls continueSendingEvents again, and so on. Patch for fix attached. |
Comments |
Comment by Thomas Bernhardt [ 18/Mar/08 ] |
Applied to branch "enhancements210_con" |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-207] Delta Event Support Created: 28/Feb/08 Updated: 11/May/08 Resolved: 10/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 2.1 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
removed "and delete" from title, on-delete already is a deletion event |
Comments |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-206] Joining more than one stream with an SQL Query Created: 28/Feb/08 Updated: 20/Aug/08 Resolved: 20/Aug/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 2.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Neil Manson | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I notice the documentation states "Only one event stream and one SQL query can be joined; Joins of two or more event streams with an SQL query are not yet supported." I don't see this feature as being listed in the roadmap, are there any plans to include this in a future release? |
Comments |
Comment by Thomas Bernhardt [ 14/Mar/08 ] |
Yep we didn't have that in the roadmap. Does your application require (a) multiple SQL queries in one statement or (b) multiple event streams and one SQL query or (c) both. The questions around order of execution become interesting as the statements could provide parameters for each other's execution. Can you provide an example of an actual use case. |
Comment by Thomas Bernhardt [ 14/Mar/08 ] |
Assigned to 2.5, since two statements connected via insert-into can accomplish the same task. |
Comment by Thomas Bernhardt [ 20/Aug/08 ] |
This was part of the release 2.2 feature set |
[ESPER-205] Additional sendEvent method that accepts alias name and event object, plus EventSender instance to skip type lookup Created: 26/Feb/08 Updated: 11/May/08 Resolved: 22/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Let's say I have two objects: class Quote { ... }class Summary { Assuming there is no discriminator in the Quote class, the question void sendEvent(Object _object) But in this case, selecting the stream by class isn't granular enough. void sendEvent(Object _object, String eventTypeAlias); |
Comments |
Comment by Thomas Bernhardt [ 26/Feb/08 ] |
I think that the idea is solid. The eventTypeAlias would need to be configured by the application before use, through the existing method addEventTypeAlias. The new sendEvent method would generate an EPException if the type does not match the configured type or is not a subtype. We may open up to support "java.lang.Object" as an event through this mechanism, which could be handy for queries strictly using instanceof, cast, exists and dynamic properties on untyped Object events. |
Comment by Thomas Bernhardt [ 26/Feb/08 ] |
I'm not sure how this suggestion would play out in Java, but I could First, define a delegate that could be used to send an event into the public delegate void EventSender<T>( T eventObject ) ; Add a method to the runtime that acquires a strongly typed sender for public EventSender<T> GetSender<T>( String eventTypeOrAlias ); The person sending the events then gets a method that only requires |
Comment by Thomas Bernhardt [ 29/Feb/08 ] |
I agree that an EventSender could eliminate a type lookup for Maps and other event types, in light of http://jira.codehaus.org/browse/ESPER-205 It may also help make the engine easier to use since the EventSender can provide information what alias and type it expects. In Java, I think we won't be able to do the nice syntax that .NET offers, I think it will need to stay: |
Comment by Thomas Bernhardt [ 06/Mar/08 ] |
For the event sender interface I can only see two methods, did I miss anything: public interface EventSender { public String getAlias(); public void sendEvent(Object event) throws EPException; } |
Comment by Thomas Bernhardt [ 07/Mar/08 ] |
I would recommend keeping the EventSender scoped narrowly so that it If this is the case, then there is no need for the getAlias() method As I understand it, parameterized types in Java are bound at runtime |
Comment by Thomas Bernhardt [ 13/Mar/08 ] |
Your method had void returns. Even so, could we do the following? It public interface EventSender<T> { void sendEvent(T event) throws EPException; }public interface EPRuntime { ... EventSender<Object> getSender(String alias); EventSender<T> getSender<T>(String alias); EventSender<T> getSender<T>(); } |
Comment by Thomas Bernhardt [ 22/Apr/08 ] |
in enhancements210 branch |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-204] DOM-type property of XML events transpose into new stream for use with XPath and nested syntax Created: 25/Feb/08 Updated: 11/May/08 Resolved: 27/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.1 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I am filtering some xml events and inserting them in a new stream. insert into machineOff select count as Tcount, new.Production as Production, new.State as State, new.ID as ID, new.Operator as Operator, new.startTime as offTime from pattern [every old=PollEvents(State in ('Warm_Start','Cold_Start')) -> new=PollEvents(State in ('Idle','Stop','Fault'),ID=old.ID) and not PollEvents(State in ('Idle','Stop','Fault'),ID=old.ID)] I can also do this, which is easier to read. insert into machineOff select count as Tcount, new, from pattern [every old=PollEvents(State in ('Warm_Start','Cold_Start')) -> new=PollEvents(State in ('Idle','Stop','Fault'),ID=old.ID) and not PollEvents(State in ('Idle','Stop','Fault'),ID=old.ID)] This is a valide eql statement but I don't now how to reference properties with 'new' in subsequent statements. I've tried new.Production and even the Xpath expression (Usage.production) but neither work. Is there a way? It would be much more concise to select the document rather than each property. |
Comments |
Comment by Thomas Bernhardt [ 25/Feb/08 ] |
the engine does allow this for Java POJO and Map-based events, however for XML events the engine does not currently allow to transpose DOM-typed properties into the insert-into stream such that the XPath or nested-property syntax can be used on the inserted-into stream. So selecting individual properties (XML elements and attributes) rather then the whole graph to populate the insert-into stream is currently the only option. |
Comment by Thomas Bernhardt [ 28/Feb/08 ] |
Assigned to 2.1 |
Comment by Thomas Bernhardt [ 27/Apr/08 ] |
In enhancements210 branch |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-203] Normalization of subevents into resultant stream Created: 23/Feb/08 Updated: 11/May/08 Resolved: 27/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.12 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sometimes we get a class that is used for more than one purpose; in my class Summary: I fire the event into the engine and perform my queries based on the What if I wanted to create a stream which was just the bids. This creates a new stream mybid with one property which is 'bid' ... |
Comments |
Comment by Thomas Bernhardt [ 23/Feb/08 ] |
its an excellent topic to bring up. Over time we have provided new ways to select into streams and there is still value that we haven't yet touched. To repeat the question, the query was: This query currently populates a stream that has a single property "mybid" that can then be used to select Quote properties. So this is already allowed (any release): The queries we discuss here select a single property that is itself a class. In the example, it seems nice to use the Quote instances, that the single property selects, as the underlying event of the inserted-into stream itself. This can simplify the consuming query. On the other hand, just because an application selects only one property and not two or more properties, we can't populate the inserted-into stream differently. The insert-into result event type should be consistent regardless of the number of properties selected, else the behavior is confusing. I'd propose we allow the inserted-into stream name as an alias name for a property, to specify that the property value itself should become the event for the stream. For example: insert into MyBidStream select bid as MyBidStream from Summary I think this syntax can make it pretty clear what the type of events into the insert-into stream is (bid.* was also possible but seems less clear). |
Comment by Thomas Bernhardt [ 24/Feb/08 ] |
The proposed syntax actually seems somewhat confusing to me. insert into MyBidStream select bid as MyBidStream from Summary Where what I think I am trying to convery is: insert in MyBidStream select bid.* from Summary To me, that seems to capture the essence of what I'm looking for., but |
Comment by Thomas Bernhardt [ 25/Feb/08 ] |
I agree that the "<property>.*" is better since, if one renames the insert-into stream, one would also have to rename the property alias. If one would forget the rename, the output of the query changes dramatically. The wildcard removes that chance of error and is also more readable. Therefore, lets go with |
Comment by Thomas Bernhardt [ 27/Apr/08 ] |
In enhancements210 branch |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-202] Allow "in" operator on array property, collection (set, list) property or map property for contains-value semantics Created: 21/Feb/08 Updated: 11/May/08 Resolved: 24/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It's been suggested to have a "contains" function, and to use the "in" keyword, and simply allow: |
Comments |
Comment by Thomas Bernhardt [ 29/Feb/08 ] |
Can this be done with an array where you have the type information? class Deal { Quote quotes[]; }class Quote { BigDecimal price; }class NamedQuote extends Quote { String name; }select * from Deal where deal.quotes.price = '123' Would duck typing like the following query work? =========== reply as you are probably aware such functions can be placed into static functions called from EPL. Thus I think we are discussing potentially extending the EPL to allow for additional intelligent array operations. The first query... The second query... In the second query, the strong type checking the EPL offers would not let the query compile as "name" is not a property on Quote. Therefore this would need to use the dynamic property syntax: We have a JIRA to use the "in" keyword for arrays: http://jira.codehaus.org/browse/ESPER-202, however the JIRA is for querying an array of primitives. Concluding, I think I'd prefer the application writes a static function to keep the EPL small and not add exceptions? |
Comment by Thomas Bernhardt [ 24/Apr/08 ] |
in enhancements210 branch |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-201] support "days" and "hours" keywords in output rate limiting Created: 19/Feb/08 Updated: 11/May/08 Resolved: 23/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
From list. You can see in doc and grammar doc that "hours" is not allowed in that syntax Ah, damn. It seemed so obvious to have 'hours' and 'days' besides |
Comments |
Comment by Thomas Bernhardt [ 19/Feb/08 ] |
minor title change |
Comment by Thomas Bernhardt [ 23/Apr/08 ] |
in enhancements210 branch |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-200] Warning output "Duplicate time event received for currentTime" Created: 19/Feb/08 Updated: 10/May/08 Resolved: 10/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Trivial |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | esper-JIRA200.jar extraTimeCheck.patch |
Number of attachments : | 2 |
Description |
in Esper 2.0 we have added a warning ...to indicate that a CurrentTimeEvent timer event (internal and external timer) indicates the same time that the engine already has internally. There is no consequence to the message, and it does not impact processing. It is less efficient, however, to send duplicate time events, and we have therefore added that warning to help the application determine that duplicate timers are processed by the engine. Also see http://esper.codehaus.org/esper-2.0.0/doc/reference/en/html_single/index.html#api-controlling-time A user has reported that this warning is output for regular processing and we are looking into. |
Comments |
Comment by Thomas Bernhardt [ 19/Feb/08 ] |
There is no impact to processing, the warning has been added to make it easier on applications that send their own timer events to determine that a timer should not be sent or has already been processed. |
Comment by Alexandre Vasseur [ 19/Feb/08 ] |
under which scenario would we have this message if no external timer is used? I think it can happen as we use scheduleAtFixedRate, and the timer event is created only upon future execution few questions
Note that drift is candidate to upcoming monitoring features |
Comment by Thomas Bernhardt [ 19/Feb/08 ] |
Do some VMs perhaps not move system clock when a full GC occurs? |
Comment by Jerry Shea [ 21/Feb/08 ] |
I've never heard of a VM freezing the system clock while GC takes place. As system clock (well at least System.currentTimeMillis) is supposed to be wall clock time, I would have though that the VM could not freeze the clock. Maybe fixed delay would do the job or alternatively the EPLTImerThread could not resend the time event if it is the same as last time? |
Comment by Alexandre Vasseur [ 25/Feb/08 ] |
Tom can you assess if fixed delay would be better in there yet without impact on the semantics? |
Comment by Alexandre Vasseur [ 03/Mar/08 ] |
patch against 2.0.0 to use fixed delay |
Comment by Alexandre Vasseur [ 07/Mar/08 ] |
one extra behavior: if you do a debug session the WARN message shows up a lot, given that stepping into breakpoint can suspend things in the background. I suggest would everyone be ok with that? |
Comment by Jerry Shea [ 12/Mar/08 ] |
When using internal timing on a windows box, if you set the internal timing msec resolution to less than the platform's resolution (16) then these warnings show up. In this case I think the warnings are useful as they show you that you are not getting the resolution that you expect from the timer. IMHO there are two solutions to this: either measure the platform's resolution (there is code to do this in Thinking about this warning some more, if the engine received non-time events between duplicate time events then wouldn't that be a cause for even more concern - maybe a log.error - as this would mean that the user would be getting erroneous results from their time windows. |
Comment by Jerry Shea [ 09/Apr/08 ] |
I reckon that scheduleWithFixedDelay more accurately reflects the semantics of the internal timer thread. Here's a patch to detect if an event has been sent in between two duplicate time events. If the user is using time windows then this may cause a problem so I have made it log.error. This error appears 7 times when I run the tests as there are some unit tests that deliberately send an event between duplicate time events. |
Comment by Mathias Bogaert [ 29/Apr/08 ] |
It would also be good to clarify the message a bit (and include the URI for the runtime): WARN [EPRuntimeImpl] EPRuntime <URI> received a time event (currentTime: 1203342565811) while having the same internal time. You can safely ignore this message. |
Comment by Alexandre Vasseur [ 05/May/08 ] |
Tom can you summarize what was impl. in 2.1 before we close this once 2.1 gets GA:
|
Comment by Thomas Bernhardt [ 05/May/08 ] |
The change to only log for external time events is already in branch "enhancements210". Lets add an additional boolean configuration that controls the warning for external timer events, "on" by default. Log is warning level. Lets also make the fixed delay/fixed rate configurable. By default I'd vote for fixed rate (thats what we have now). |
[ESPER-199] switch xsd to 2.0 and make it namespace aware and available online Created: 14/Feb/08 Updated: 14/Feb/08 Resolved: 14/Feb/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.12 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
switch xsd to 2.0 and make it namespace aware and available online |
Comments |
Comment by Alexandre Vasseur [ 14/Feb/08 ] |
done |
[ESPER-198] esperIO CSV adapter to support sending of bean events as well as map events Created: 13/Feb/08 Updated: 11/May/08 Resolved: 13/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.12, 2.0 |
Fix Version/s: | 2.1 |
Type: | Improvement | Priority: | Minor |
Reporter: | Jerry Shea | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | beanSupport2.patch beanSupport.patch |
Number of attachments : | 2 |
Description |
I really need esperIO CSV adapter to be able to send bean events instead of Map events. I've hacked up a solution... |
Comments |
Comment by Jerry Shea [ 13/Feb/08 ] |
See mailing list thread http://www.nabble.com/esperIO-CSV-adapter-to-send-bean-events-as-well-as-map-events-to15453972.html |
Comment by Thomas Bernhardt [ 13/Feb/08 ] |
Moved to 2.1 to 2.5 release, for the 2.0 release it's going to be a little tight |
Comment by Jerry Shea [ 14/Feb/08 ] |
Here's some initial code, with only 1 additional test. Working against trunk I've: I'm not sure how to efficiently test this new functionality. It would be nice to be able to run all the tests in TestCSVAdapterUseCases twice, once for Maps and once for Beans but I don't know how to do this in JUnit, and also have not fully analysed all the tests to see if they should be run for both Maps and Beans. |
Comment by Jerry Shea [ 02/Mar/08 ] |
Here's a new patch which I think resolves the problems with the last (unfinished) one. |
Comment by Thomas Bernhardt [ 30/Mar/08 ] |
Incorporated to the enhancements210_con branch |
Comment by Thomas Bernhardt [ 09/Apr/08 ] |
Assigned to 2.1 |
Comment by Thomas Bernhardt [ 13/Apr/08 ] |
Set to resolved, in enhancements210_con branch |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-197] EsperIO/CSV reported to be slow Created: 13/Feb/08 Updated: 11/May/08 Resolved: 16/Mar/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.12 |
Fix Version/s: | 2.1 |
Type: | Bug | Priority: | Minor |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | log.debug.patch |
Number of attachments : | 1 |
Description |
EsperIO/CSV is reported to be slower than hand written file parsing code by a factor of 10 which seems too much a baseline (on Sun T2000) was posted by Ukyo on lists in February 2008 we also should be more explicit on perf in doc, and point out to NIO as users commented to Ukyo on the list. |
Comments |
Comment by Ukyo Virgden [ 13/Feb/08 ] |
Please let me know if you need any more information. |
Comment by Jerry Shea [ 27/Feb/08 ] |
I had an example of esperio running very slowly and using up lots of amounts of CPU. With some very basic profiling (hitting pause in Eclipse a few times, rather than doing it properly) I saw that one of the log.debugs was causing the problem. I added if log.isDebugEnabled to the log.debugs in AdapterCoordinatorImpl, CSVReader, AbstractCoordinatedAdapter. Once this was done, the CPU plummeted and everything ran much quicker. I'm afraid I haven't had time to work this up properly i.e. gather proper profiling evidence, and nail down the exact log.debug statement, but thought I'd mention it in case it helps anyone. |
Comment by Thomas Bernhardt [ 28/Feb/08 ] |
assigned to 2.1 release log.debug(...) should be surrounded by: if ((ExecutionPathDebugLog.isDebugEnabled) && (log.isDebugEnabled())) { log.debug(...); } |
Comment by Jerry Shea [ 02/Mar/08 ] |
Have the committers given any thought to SLF4J (http://slf4j.org/). It doesn't require implicit toStrings to be called may well not have exhibited this problem (http://slf4j.org/faq.html#logging_performance). I appreciate it is a bit of a change.... What do you think? |
Comment by Alexandre Vasseur [ 07/Mar/08 ] |
I understand this is a wrapper, and thus would replace commons-logging, but would still f.e. allow use of log4j configs as default scheme throughout samples etc Can someone assess if our other depdendancies would still require commons-logging (cglib, antlr). Otherwise we'll add yet another deps instead of replacing one, and I would not favor this. Also, the current ExecutionPathDebugLog.isDebugEnabled ends up in a static boolean check, where using slf4j with log4j beehind would end up a in few extra indirection, stack variable push (string, extra objects) and an integer comparison (in log4j Hierarchy). Tom - thoughts? |
Comment by Thomas Bernhardt [ 16/Mar/08 ] |
I think the ExecutionPathDebugLog.isDebugEnabled gives the best performance and make the choice of logging framework less relevant. We'd need to make a 3.0 release to change dependencies. Need to change esperio to add the check |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-196] Configuring a DB for an OutputAdapter Created: 13/Feb/08 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.12 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Luca Alberto Milani | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Using Eclipse 3.2 on Windows xp |
Number of attachments : | 0 |
Description |
Hi, I'm luca I'm trying to connect a DB to ESPER. I had no problems in using ConfigurationDBRef and I'm able to join event data with stored data. My need is to store data in my SQL server data base ... really I don't know how to do that. I think I have to create a class to extend BaseSubscription and another one extending OutputAdapter. Please tell me something helpful and forgive my ugly english Thanks Luca |
Comments |
Comment by Thomas Bernhardt [ 13/Feb/08 ] |
Hi Luca, Yep the output adapters could be used to write to a DB, if you want to create a solution that is more generic in nature or plug-in capable and perhaps contribute that to the project. The output adapter can hook up to streams populated by insert-into. The classes you mention are the right start. Applications often simply chose to write to a DB from the listener code, as a specific solution . |
Comment by Luca Alberto Milani [ 13/Feb/08 ] |
Hi Tom, thanks! I don't know if I'm doing it right, this is what I've understood: I have to create an event and to register it in the Subscription file, I have to override method Start(), creating connection in that context. I have to create a method called send() in my output adapter to implement the "insert into" JDBC procedure. Am I doing it in the right way? What do I have to expect from ESPER after those implementations? Which is the correct syntax for the ESPER "insert into" procedure (in the case of insert into DB) ? Thank you for the time spent upon my problems ... Luca |
Comment by Alexandre Vasseur [ 17/Feb/08 ] |
yes output adatper, very likely similar to the existing JMS one with some Spring conf and custom marshalling (for event to table persistence) is the right way to go if you want to add that feaature to Esper for a one shot solution it might be easier for you to implement this directly in an UpdateListener |
Comment by Luca Alberto Milani [ 20/Feb/08 ] |
Hi Tom. In the output adapter I used an AdapterStateManager to implement methods to manage the adapter state (start, stop ...). My start() method is a copy-pasted solution from the same method in JMSOutputAdapter. I've implemented the method send(EventBean eb), which include all my JDBC policyand manage output on DB. Using the runtime configuration setting, when I start up my application, I use these invocations: DBSubscription dbs = new DBSubscription(); // my Subscription implementation dboai.setEPServiceProvider(esperEngine); // esperEngine is an EPServiceProvider object doing this simple implementations, when I use "insert into ETAname(properties) etc ...", everything goes in the right way ... my DB is updated etc... Now ... how can I told to my engine to use more than one alias (and Subscription)? This because when I tried to register another event I have encountered this problem: net.esper.client.EPStatementException: Error starting view: Event type named 'newETAname' has already been declared with differing column name or type information [insert into newETAname'(intValue,doubleValue,stringValue) select ... from ... Probably you'll find hard to understand my problems, but I hope you''ll manage to do it ... please help me ... thanks Luca |
Comment by Alexandre Vasseur [ 21/Feb/08 ] |
You need to alias it under a different name maybe Do you want to contribute this code to the project if you think it is generic enough f.e. built atop Spring like the JMS code we had to allow declarative configuration? |
Comment by Luca Alberto Milani [ 21/Feb/08 ] |
Thanks, I've solved my problem Now I'm developing an application that uses esper and I'm creating a set of portable output adapters for different kind of outputs. The actual problem is to decide, whithin a DB context, how can I tell to my adapter to do an Update instead of an insert. Actually I have to finish it, I hope I'll be able to make it generic enough, when everything will be finished I'll send you the code. Thank you very much. Luca |
Comment by Thomas Bernhardt [ 22/Apr/08 ] |
Assigned to 2.5, unless contribution makes it possible to release earlier |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Duplicate to esperio db output adapter |
[ESPER-195] Not considering having-clause in un-aggregated and un-grouped query (no-join only) Created: 09/Feb/08 Updated: 18/Feb/08 Resolved: 11/Feb/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.12 |
Fix Version/s: | 2.0 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem affects queries without aggregation and group-by, that have a having-clause. |
[ESPER-194] Nullpointer when using Jcl104-over-slf4j Created: 07/Feb/08 Updated: 18/Feb/08 Resolved: 10/Feb/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.11 |
Fix Version/s: | 2.0 |
Type: | Bug | Priority: | Major |
Reporter: | Mathias Bogaert | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Tomcat 6.0.14, Esper 1.11, slf4j-api 1.4.3, jcl104-over-slf4j 1.4.3, JDK 1.6.0 update 4 |
Number of attachments : | 0 |
Description |
16:41:55.626 [Timer-1] ERROR Timer-1 - Thread terminated with exception: Timer-1 Perhaps due to http://bugzilla.slf4j.org/show_bug.cgi?id=15 ? The commons-logging log instances are declared static but not final? Maybe you guys need to switch to SLF4J? Much better performance using Logback (see http://www.javadonkey.com/blog/log4j-isdebugenabled-logback/) |
Comments |
Comment by Thomas Bernhardt [ 10/Feb/08 ] |
For the execution path debug logging we had introduced a static boolean flag on class ExecutionPathDebugLog, so all the debug-logs in the execution path should read: The ExecutionPathDebugLog.isDebugEnabled can only be set to true via explicit configuration. The UpdateDispatchViewBlocking, my mistake, does not have the above check but should. In release 2.0 we'll make sure once more that all such checks are there. |
Comment by Thomas Bernhardt [ 10/Feb/08 ] |
We could provide a patch to the release 1.12 engine if you require so. |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-193] EsperIO package refactoring to esperio Created: 05/Feb/08 Updated: 18/Feb/08 Resolved: 13/Feb/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
EsperIO package is c.e.esper.plugin will add to the list of API breaks in 2.0 |
Comments |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-192] support non String type in EsperIO Created: 05/Feb/08 Updated: 10/Feb/08 Resolved: 10/Feb/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Alexandre Vasseur |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
esperIO assume types are String, especially when using an header row |
Comments |
Comment by Thomas Bernhardt [ 05/Feb/08 ] |
It already supports typed columns, by defining a Map event type and using the alias for that type |
Comment by Alexandre Vasseur [ 05/Feb/08 ] |
reopen |
Comment by Alexandre Vasseur [ 10/Feb/08 ] |
impl & doc |
[ESPER-191] Support nano/microsecond resolution Created: 03/Feb/08 Updated: 11/May/08 Resolved: 27/Apr/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.12 |
Fix Version/s: | 2.1 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | nano1.esper2.patch nano1.patch nano1warn.esper2.patch nano2.patch TestSystemTimers.java |
Number of attachments : | 5 |
Description |
Uses cases have come up where the millisecond resultion is to coarse-grained. A user has done bit more investigation on this and confirmed that, when he passes external timer ticks into the Esper engine, everything works well for his test (1ms time_batch window). But to do this he had to remove the checks in the engine that prohibit <100ms time_batch windows. Here is a link to an article about the resolution of System.currentTimeMillis: http://www.javaworld.com/javaworld/javaqa/2003-01/01-qa-0110-timing.html Other work:
|
Comments |
Comment by Jerry Shea [ 05/Feb/08 ] |
To compare System.currentTimeMillis and System.nanoTime I have done some measurements on two platforms:
a) Windows XP, Sun Java 6, 32bit
b) RedHat Enterprise Linux, Sun Java 6, 64bit
I'll attach the code I used to generate these measurements tomorrow. In summary, on Windows System.nanoTime is much slower than System.currentTimeMillis and System.currentTimeMillis's resolution is not good enough for fine grained timers. On RHEL, resolution is fine, and performance comparable. |
Comment by Thomas Bernhardt [ 05/Feb/08 ] |
Given how much slower System.nanoTime is over System.currentTimeMillis (on Windows) should we allow the user to choose which one they use with a configuration parameter? A new config could be: <timer nano-enabled="false"/> stanza inside <threading> in the configuration and, depending on its value, we could read <internal-timer msec-resolution="xx"/> or <internal-timer nsec-resolution="xx"/>. Giving the user no choice and choosing System.nanoTime as the internal impl would certainly make the code cleaner and lead to less multiplying and dividing by 1,000,000. |
Comment by Jerry Shea [ 06/Feb/08 ] |
basic program to test timer resolution and performance on your platform |
Comment by Thomas Bernhardt [ 06/Feb/08 ] |
Moved to release 2.1 to 2.5 (2.5 for now) as more research is required |
Comment by Jerry Shea [ 10/Feb/08 ] |
Here is a patch made against esper/tags/release_1.12_0/trunk/esper. Tom&Alex, please let me know what you think and I can make another patch against trunk for esper2. It includes the following changes: All tests pass that passed before [testOperator(net.esper.regression.pattern.TestCronParameter) fails before and after - will look into this]. This patch only ensures that the esper internals do not have to rely on System.currentTimeMillis resolution (16ms on my Windows boxes) and are able to support finer-grained resolution. In retropect, it would be easy to parameterise the engine through configuration to use either of System.currentTimeMillis as opposed to System.nanoTime as this is only called in two places. I have done some tests using internal timing with very fine-grained time windows (e.g. 1msec) and would not recommend you use internal timing for this use case on a vanilla (i.e. not real-time) VM due to GC etc. When I use external timing and 1msec windows everything works like a charm. I have started making the changes to convert the internals of esper to use nanoseconds instead of milliseconds but it is a bigger job than I initially thought and I've put this on the back burner for now. |
Comment by Thomas Bernhardt [ 10/Feb/08 ] |
Great-thanks for the extensive comments and patch. We'll need to digest your work. The TestCronParameter probably fails as there was a leap year problem with the code that we found during unit tests in 2008, and fixed recently. When you use external timing, do you use a thread pool for sending timer events? I think the project would benefit from sample code, or perhaps a couple of classes in the client API, to simplify. |
Comment by Jerry Shea [ 11/Feb/08 ] |
Another patch that adds a log.warn if you send a duplicate time event into the engine. Having this would certainly have saved me some time during my testing of esper timing internals Will look at tidying up my test/example code for esper examples. |
Comment by Alexandre Vasseur [ 11/Feb/08 ] |
great work. |
Comment by Jerry Shea [ 11/Feb/08 ] |
I'll upload patches against trunk in approx 8 hours if that helps. It would be great to get this out as part of 2.0 if it's ok with you guys. Please ignore the second patch for now - I will re-upload it later. |
Comment by Jerry Shea [ 12/Feb/08 ] |
Here's the nanoTime patch but made against svn trunk. Very similar to the last one but I had to make some changes around EPLTimerTask to capture clock drift. |
Comment by Jerry Shea [ 12/Feb/08 ] |
(nano1warn.esper2.patch) And here's the same patch but with extra code to log.warn when a duplicate time event is received by the engine. I initialise currentTime to current time - 1ms in SchedulingServiceImpl constructor to prevent this warning being logged everywhere. |
Comment by Thomas Bernhardt [ 13/Feb/08 ] |
I will rewrite the code changes into trunk for the 2.0 release |
Comment by Thomas Bernhardt [ 14/Feb/08 ] |
Added to trunk, documentation changes under review |
Comment by Alexandre Vasseur [ 14/Feb/08 ] |
some issue with engine time under discussion |
Comment by Thomas Bernhardt [ 15/Feb/08 ] |
For release 2.0, the timer uses System.currentTimeMillis() (and not nano since nano is not related to wall clock). |
Comment by Jerry Shea [ 21/Feb/08 ] |
Here's another patch that fixes the System.nanoTime wallclock issue. |
Comment by Jerry Shea [ 24/Feb/08 ] |
What do you guys think about this latest patch? As I see it we could: |
Comment by Alexandre Vasseur [ 25/Feb/08 ] |
In the patch 2 (from Feb 21), I can read in the TimeSourceNanos: + public TimeSourceNanos() { + super(); + // calculate approximate offset by referring to TimeSourceMillis which + // is already normalised to wall clock time + this.wallClockOffset = new TimeSourceMillis().getTimeMicros() - this.getTimeMicros(); + }+ I think wallClockoffset is a bad name, as there is no meaning in substracting / adding wall clock time and System.nanoTime() since the later is not a time information but simply some counter (the javadoc f.e. also say it could be negative sometime) The one issue I see is that I assume it will be impossible to synchronise 2 instances even running on the same hardware and OS (in 2 jvms, as the offset will be different). I thus would like to have TimeSourceMillis the default. Let's see Tom comments now. |
Comment by Thomas Bernhardt [ 25/Feb/08 ] |
http://blogs.sun.com/dholmes/entry/inside_the_hotspot_vm_clocks |
Comment by Jerry Shea [ 26/Feb/08 ] |
Interesting article. I tried running my stats measurement program again on my laptop with -XX:+ForceTimeHighResolution set but it have the same results i.e. a System.currentTimeMillis resolution of 15-16 ms. Two instances in two JVMs would have a different offset but the end wall clock time would be within 15-16 ms given the above code. It could be made more accurate by waiting for System.currentTimeMillis to "flip over" its resolution boundary i.e. wait until System.currentTimeMillis changes its time before calculating the offset. I believe this would allow 2 VMs to be synchronised to 1 millisecond. I'll upload some sample code later, but I think this would allow two VMs to report an accurate, synchronised wall clock time, cross platform (i.e. on Windows). |
Comment by Jerry Shea [ 02/Mar/08 ] |
Looking at the code again, the code (in waiting for construction of TimeSourceMillis) does wait for System.currentTimeMillis to flip over. As this is the case, I believe that 2 VMs would be synchronised as accurately as they are now, using System.currentTimeMillis. |
Comment by Thomas Bernhardt [ 18/Mar/08 ] |
Changes applied to branch "enhancements210_con". |
Comment by Thomas Bernhardt [ 09/Apr/08 ] |
Reopen for further changes as part of the the esper-210-con banch and 2.1 release |
Comment by Thomas Bernhardt [ 27/Apr/08 ] |
Already merged to enhancements210_con branch |
Comment by Thomas Bernhardt [ 10/May/08 ] |
The TimeSourceService was too inefficient as it first multiplied System.currentTimeMillis by 1000 and then divided it by 1000 for each call. The new TimeSourceService that was rewritten in trunk keeps a public static boolean that indicates whether to use System.currentTime of System.nano (wallclock-adjusted), making the configuration a JVM-global setting. |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-190] Add event type alias to EventType interface Created: 01/Feb/08 Updated: 08/Nov/08 Resolved: 05/Nov/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.12 |
Fix Version/s: | 2.3 |
Type: | Improvement | Priority: | Minor |
Reporter: | Scott Frenkiel | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be nice if you could determine from an EventBean what the event type alias for the event is. EventType seems like the right place to do this, but EventType currently only reports the class type for the EventBean, not the alias. For map events this comes out as Map.class. It would be helpful if my update listeners & views could differentiate mapped events. |
Comments |
Comment by Thomas Bernhardt [ 02/Feb/08 ] |
The relationship between EventType and alias is actually not necessarily a one-to-one relationship. For example: The EventType for MyClass still exists only once, however now statements that say Therefore its is only be possible to supply the primary alias, i.e. in this example "AEvent" as that is the first name the class has been registered with. However when the listener to statement (2) receives events the EventType will say "AEvent", not "BEvent". Would adding a application-defined property to the event be terrible? |
Comment by Scott Frenkiel [ 02/Feb/08 ] |
Thanks for responding. I see what you are saying, actually it makes me curious why you would want to register the same class with 2 different aliases? Although for map events i suppose that couldn't easily be prevented. As you suggest, we are already using a special property to get around this for now. But I was hoping for a more general solution. It looks like the implementation of EventType that we are using, MapEventType, carries the event's alias as a private variable. Even if you don't want to modify the interface, just exposing that field in the subclass would be helpful. |
Comment by Thomas Bernhardt [ 03/Feb/08 ] |
You are suggesting we make the "typeName" member that carries the alias name a protected field so its available in a subclass? Do you have a good reason to subclass? The other option could be to add an interface AliasedEventType with a "getAlias" method, and have the MapEventType and DomEventType implement that interface. |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
Assigned to 2.1 to 2.5 release |
Comment by Thomas Bernhardt [ 05/Nov/08 ] |
in 2.3 |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-189] Improve performance of anonymous map events by using indexed access in EventPropertyGetter Created: 26/Jan/08 Updated: 04/Aug/10 Resolved: 04/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 04/Aug/10 ] |
Not considered an option, subscriber is an alternative delivery method with still better performance. |
[ESPER-188] Output snapshot buffers events until output condition is reached Created: 26/Jan/08 Updated: 18/Feb/08 Resolved: 28/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.12 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The situation is that S1 is a high-volume stream, assume 100000/sec events. Esper can keep up with the stream filtering and computing aggregates. However a further consumer needs to output results only once per day (for example). The once-per-day consumer (Q1) should not buffer events. // this statement should not buffer events arriving for Q1 for 1 day |
Comments |
Comment by Thomas Bernhardt [ 28/Jan/08 ] |
A bug fix release has been made available that fixes the issue: esper-1.12.0e.jar in the download area under previous release. See esper-1.12.0-bugfix-changelog.txt for bug fix change log. |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 and |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
...and a bug fix for 1.12 is also available |
[ESPER-187] Join of two or more named windows on late start may not return correct aggregation state on iterate Created: 18/Jan/08 Updated: 18/Feb/08 Resolved: 18/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.12 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This affects statements that joins two or more named windows, that aggregate and that start the join statement on already-filled named windows. Sample queries: |
Comments |
Comment by Thomas Bernhardt [ 18/Jan/08 ] |
Bug fix release available under "esper-1.12.0d.jar" in distribution dir. |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-186] Iterator not honoring order by clause for grouped join query with output-rate clause Created: 18/Jan/08 Updated: 18/Feb/08 Resolved: 18/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.12 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem affects the iterator result of queries that are all of the following
Workaround: leave output rate clause off Sample query: The iteration result may not be returned sorted as a result. |
Comments |
Comment by Thomas Bernhardt [ 18/Jan/08 ] |
Bug fix release available under "esper-1.12.0d.jar" in distribution dir. |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-185] Remove limitation whereas grouped-by properties cannot also occur within aggregation functions Created: 14/Jan/08 Updated: 15/Jan/08 Due: 15/Jan/08 Resolved: 15/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.12 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The error reported is: > net.esper.client.EPStatementException: Error starting view: Group-by property 'xxx' cannot also occur in an aggregate function in the select clause [select cat, xxx, yyy, count(xxx) as mycount from ANamedWindow group by cat, xxx, loc output every 1.0 seconds] ======= The limitation had originally been observed in database systems, with Sybase(TM), Oracle(TM) and MySQL(TM) being the references that were used in the original designs. |
Comments |
Comment by Thomas Bernhardt [ 15/Jan/08 ] |
Changed to bug fix, release patch for 1.12 will be made |
Comment by Thomas Bernhardt [ 15/Jan/08 ] |
Patch release made available in distribution dir by name esper-1.12.0c.jar |
[ESPER-184] NPE when using regexp or like on null pojo properties Created: 11/Jan/08 Updated: 18/Feb/08 Resolved: 30/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.11 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Edmund Wagner | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
when using like or regexp on a string property that can be null a npe is thrown. workaround: check if its null before doing the regexp or like check ( a.b!=null and a.b like 'asdf%' ) would be nice if they would just return false. |
Comments |
Comment by Edmund Wagner [ 11/Jan/08 ] |
I'm sorry the workaround does not work. |
Comment by Thomas Bernhardt [ 27/Jan/08 ] |
In checking and testing the like and the regexp both return null if the event property is null...can you please let us know a stack trace or more details? |
Comment by Edmund Wagner [ 28/Jan/08 ] |
im using a statement like: "at net.esper.filter.FilterParamIndexBooleanExpr.matchEvent(FilterParamIndexBooleanExpr.java:80)" 09:07:32,464 ERROR [STDERR] net.esper.client.EPException: java.lang.NullPointerException let me know if you need any additional info. |
Comment by Edmund Wagner [ 28/Jan/08 ] |
esper version is 1.11.0 |
Comment by Thomas Bernhardt [ 29/Jan/08 ] |
Thanks for the additional info. We'll have this in the 2.0 release |
Comment by Thomas Bernhardt [ 30/Jan/08 ] |
In 2.0 release |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-183] Replace LinkedLists with ArrayDeque where possible Created: 09/Jan/08 Updated: 18/Feb/08 Resolved: 30/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Performance |
Affects Version/s: | 1.12 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Richard Huddleston | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP, Java 1.6 |
Attachments: | ProfilerScreenshot.png |
Number of attachments : | 1 |
Description |
Please replace LinkedLists with ArrayDeques (since JDK 1.6) and (backported from JDK 1.6 if must) where possible (i.e., you don't need to remove / iterator remove from the non head / tails of the list). Attached is a profiling session showing that 20% of our object allocations are in LinkedList.add (with most of that related to Esper views). I took a look at the source code, and in both TimeBatchView and TimeWindow, ArrayDeques could be used (assumming the EventCollection .iterator.remove calls are not being used). If the iterator.remove() calls are being used, perhaps there could be an optional way to specify that a view will not create an iterator mutable event collection. Then based on that, decide whether to use ArrayDeques or LinkedLists. Since ArrayDeques were added in 1.6, perhaps the source code could be ported into Esper. |
Comments |
Comment by Thomas Bernhardt [ 10/Jan/08 ] |
Great suggestion, thank you. I have tried to backport the ArrayDeque class from JDK6 to JDK5 and found no problem. Scheduled for 2.0 release due next, which will still be build with JDK5. |
Comment by Thomas Bernhardt [ 30/Jan/08 ] |
The ArrayDeque does turn out faster then LinkedList when used for adding, removing and iteration. For construction and no removal with few elements, it seems about equivalent. For toArray() operation it's clearly slower. |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-182] Allow array as variable type Created: 27/Dec/07 Updated: 21/May/12 Resolved: 21/May/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A suggestion is to allow arrays and not just scalar values as variable types, such that the in-clause can use a single variable and variable values can be assigned using the " {...}" syntax. |
Comments |
Comment by Thomas Bernhardt [ 21/May/12 ] |
removed from roadmap |
[ESPER-181] Add API to set variable values Created: 27/Dec/07 Updated: 18/Feb/08 Resolved: 10/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.12 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In Esper 1.12, variables can be set via the On-Set statement only, and there is no API to set one or more variables. This suggestion was raised to add an API. |
Comments |
Comment by Thomas Bernhardt [ 10/Jan/08 ] |
For release 2.0 |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-180] Null aggregation results outer joining a named window on filled named window Created: 26/Dec/07 Updated: 15/Jan/08 Resolved: 26/Dec/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.12 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem has been reported for release 1.12. Aggregation results for a statement that joins a named window are incorrect if the statement is created on an already-populated named window. This occurs with the iterator API and also for the subscription API. To reproduce: 1) create named window ).win:length(3) as select string, intPrimitive, boolPrimitive from SupportBean 2) insert into for named window 3) populate events into named window... 4) create statement joining the named window and aggregating on join results: 5) use iterator API to obtain results, aggregation values are initial values and don't reflect named window contents Workaround: create statement before sending events to the named window, or use on-select instead See comments for bug fix jar file release. |
Comments |
Comment by Thomas Bernhardt [ 26/Dec/07 ] |
The updated jar file that fixes issue The updated jar file is "esper-1.12.0b.jar" and can be downloaded from our download page under previous releases, at http://dist.codehaus.org/esper/ |
[ESPER-179] Iterator on select statement selecting from a named window may return incomplete results Created: 20/Dec/07 Updated: 15/Jan/08 Resolved: 21/Dec/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.12 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This problem manifests itself when a statement selects from a named window and the iterator is used to pull statement results. The result returned by the iterator may only return the last event rather then a complete set of events. For example: ).win:length(9) as select string, intPrimitive from SupportBean The iterator on the last statement may not return the full result set when the result set consists of multiple rows. |
Comments |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
The updated jar file that fixes issue The updated jar file is "esper-1.12.0a.jar" and can be downloaded from our download page under previous releases, at http://dist.codehaus.org/esper/ |
[ESPER-178] Problem selecting "sum" as a property of event posted by stat:uni view Created: 06/Dec/07 Updated: 18/Feb/08 Resolved: 11/Feb/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | 2.0 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I am trying to run the query shown below but get an error because sum the parser thinks i am trying to specify sum('whatever') and expects the parenthesis. Anyone know how get around this (without using the sum(''whatever') notation) ? select symbol, sum event.PriceChangeEvent.win ================ The workaround is to select * from the view. The "sum" property gets hidden by the parser and will need to be renamed, or a second property provided, in a next version. |
Comments |
Comment by Thomas Bernhardt [ 13/Dec/07 ] |
Assigned to 2.0, requires a change that is not backwards compatible; version 2 may rename to "total" and "datapoints" |
Comment by Thomas Bernhardt [ 11/Feb/08 ] |
In release 2.0, the two properties "sum" and "count" are renamed to "total" and "datapoints" See also Wiki at http://docs.codehaus.org/display/ESPER/Migrating+Esper+1.x+to+Esper+2.x |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-177] Deadlock in EPRuntimeImpl.sendEvent Created: 30/Nov/07 Updated: 21/Dec/07 Resolved: 07/Dec/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.11 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Blocker |
Reporter: | Richard Huddleston | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
windows xp, jdk 1.6 |
Attachments: | EsperBug177.zip |
Number of attachments : | 1 |
Description |
Found one Java-level deadlock: Java stack information for the threads listed above:
Found 1 deadlock. |
Comments |
Comment by Thomas Bernhardt [ 30/Nov/07 ] |
Can you please attach the statements that produce the deadlock? Or better yet a test case? Try this configuration option: |
Comment by Richard Huddleston [ 03/Dec/07 ] |
Unfortunately, I can't attach our statements, but I hope what I've provided will help. |
Comment by Thomas Bernhardt [ 05/Dec/07 ] |
Deepest thanks for the outstanding testcase! |
Comment by Thomas Bernhardt [ 07/Dec/07 ] |
In release 1.12 |
Comment by Thomas Bernhardt [ 07/Dec/07 ] |
In 1.12 we have re-written the insert-into locking to use latches instead. |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-176] NullPointerException for grouped-by length view and previous operator Created: 28/Nov/07 Updated: 21/Dec/07 Resolved: 28/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
java.lang.NullPointerException |
Comments |
Comment by Thomas Bernhardt [ 28/Nov/07 ] |
This can be worked-around by disabling view-sharing via the configuration option: |
Comment by Thomas Bernhardt [ 28/Nov/07 ] |
fixed by view factories checking view reusability taking random access into account |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-175] ArrayIndexOutOfBoundsException with when no event posted with new multipolicy time-length batch window Created: 28/Nov/07 Updated: 21/Dec/07 Resolved: 28/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
But I see it happening today against 1.11.0. Here's the exact stack trace I get, which is very similar to the one below. Exception in thread "Timer-7" java.lang.ArrayIndexOutOfBoundsException: 0 at net.esper.core.UpdateDispatchViewBlocking.update(UpdateDispatchViewBlocking.java:43) at net.esper.view.ViewSupport.updateChildren(ViewSupport.java:97) at net.esper.eql.view.OutputProcessViewPolicy.output(OutputProcessViewPolicy.java:176) at net.esper.eql.view.OutputProcessViewPolicy.continueOutputProcessingView(OutputProcessViewPolicy.java:167) at net.esper.eql.view.OutputProcessViewPolicy$1.continueOutputProcessing(OutputProcessViewPolicy.java:230) at net.esper.eql.view.OutputConditionTime$1.scheduledTrigger(OutputConditionTime.java:122) at net.esper.core.EPRuntimeImpl.processScheduleHandles(EPRuntimeImpl.java:351) at net.esper.core.EPRuntimeImpl.processSchedule(EPRuntimeImpl.java:318) at net.esper.core.EPRuntimeImpl.processTimeEvent(EPRuntimeImpl.java:285) at net.esper.core.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:217) at net.esper.core.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:121) at net.esper.core.EPRuntimeImpl.timerCallback(EPRuntimeImpl.java:104) at net.esper.timer.EQLTimerTask.run(EQLTimerTask.java:29) at java.util.TimerThread.mainLoop(Unknown Source) at java.util.TimerThread.run(Unknown Source) |
Comments |
Comment by Thomas Bernhardt [ 28/Nov/07 ] |
Provided a bug fix for version 1.11 in distribution as jar file "esper-1.11.0a.jar" |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-174] Insert-into from pattern with wildcard and no tags creates incompatible streams Created: 26/Nov/07 Updated: 21/Dec/07 Resolved: 26/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I am trying to destroy the statement loaded into the Esper and trying to load the new statement, My Eql's are Like ... insert into p1 select * from pattern [ every LogIn()] insert into p2 select * from pattern [ every LogOut()] Here what exaclty i am doing is .. // Creating EQL's String stmtText1 = insert into p1 select * from pattern [ every LogIn()] String stmtText2 = insert into p2 select * from pattern [ every LogOut()] // Loading to Engine EPStatement stmt1 = epService. getEPAdministrator().createEQL(stmtText1, EPStatement stmt2 = epService. getEPAdministrator().createEQL(stmtText2, /// Here when i check for all the Loaded statements in the Esper the output is Both EQL1 and EQL2 for System. out.println(temp); // Prints Both EQL1 and EQL2 // I am destryong EQL2 epService.getEPAdministrator(). getStatement("EQL2").destroy(); // After destroying EQL2 if i check for the all the loaded statements it prints EQL1 so it means that only EQL one is running for(String temp : epService.getEPAdministrator(). getStatementNames()) System.out.println(temp); // Prints Both EQL1 only // Loading statement into esper engine.. EPStatement stmt3 = epService. getEPAdministrator().createEQL(stmtText2,"EQL2"); But this is giving me error... net.esper.client.EPStatementExc eption : Error starting view: Event type named 'p2' has already been declared with differing column name or type information [insert into p2 select * from pattern [ every LogOut()] ] at net.esper.core.StatementLifecyc leSvcImpl.startInternal( at net.esper.core.StatementLifecyc leSvcImpl.start( at net.esper.core.StatementLifecyc leSvcImpl.createAndStart( at net.esper.core.EPAdministratorI mpl.createEQLStmt( at net.esper.core.EPAdministratorI mpl.createEQL( at com.Test.testEQL( at com.Test.main( |
Comments |
Comment by Thomas Bernhardt [ 26/Nov/07 ] |
In release 1.12 |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-173] Iterator and safe iterator to support joins and outer joins Created: 30/Oct/07 Updated: 21/Dec/07 Resolved: 30/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | 1.12 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The is for the iterator and safe iterator ( |
Comments |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-172] New safe iterator to provide a concurrent-safe pull API Created: 30/Oct/07 Updated: 21/Dec/07 Resolved: 30/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | 1.12 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This new feature adds a new iterator to the EPStatement interface (the EPIterable interface): If an application does not close the safe iterator, the statement remains locked until the safe iterator is closed. Planned for release 1.12 |
Comments |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-171] AutoID example in Sun JDK6 fails with Invalid schema error Created: 26/Oct/07 Updated: 21/Dec/07 Resolved: 15/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 1.12 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
------------------------------------------------------------------------------- |
Comments |
Comment by Thomas Bernhardt [ 15/Nov/07 ] |
Fix requires an Esper build with JDK6 in order to run in a JDK 6 engine, as the schema interrogation uses Xerxes classes shipped with the respective JVM |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-170] Ability to delay event listners for delayed or out of sync events Created: 23/Oct/07 Updated: 26/Oct/07 Resolved: 26/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Improvement | Priority: | Major |
Reporter: | Noah Campbell | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
We're currently generating events from our source systems and using various transports to move the data into Esper. There are times when some data is delayed or sent out of order. We would like for Esper to be able to: 1. Use the timestamp from the event to determine eligibility into a window/aggregate. |
Comments |
Comment by Thomas Bernhardt [ 23/Oct/07 ] |
Through the mailing list a new view was proposed for this, as below (from http://archive.esper.codehaus.org/user/490199.51192.qm%40web37111.mail.mud.yahoo.com) (3) View for buffering and sorting out-of-order events (in JIRA This new view is for pre-processing of a stream of events that arrive out-of-order in reference to an event timestamp column. The view buffers events for a given interval and releases events by timestamp order. The time-order view examines the timestamp of each arriving event and compares that timestamp with the engine time: Example: Here events are expected to have a 'timestamp' column. The view buffers each arriving event for a maximum of 1 second before releasing the event, to allow for older events arriving during the time an event waits in the buffer. The view is not a data window view as it does not present a remove stream and insert stream, but only an insert stream. |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
Duplicate to |
[ESPER-169] remove/replace ExecutionPathDebugLog.isEnabled() with direct access to the isDebugEnabled variable Created: 21/Oct/07 Updated: 21/Dec/07 Resolved: 13/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | 1.12 |
Type: | Improvement | Priority: | Major |
Reporter: | Ming Fang | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
ExecutionPathDebugLog.isEnabled() is called many many times and therefore should be as fast as possible. |
Comments |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
assigned to 1.12 |
Comment by Noah Campbell [ 26/Oct/07 ] |
Today's JVM's would inline this method call so this change would not necessarily provide any gain in performance. Ming: Did you attach a profiler and see it consume a lot of CPU cycles around this method? |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-168] missing 3rd party licenses Created: 09/Oct/07 Updated: 12/Oct/07 Resolved: 12/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 1.11 |
Fix Version/s: | None |
Type: | Wish | Priority: | Minor |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
trunk/esper/lib is missing 3rd parties license for Those license should stand in there (just as the antlr, commons and junit licenses) |
Comments |
Comment by Alexandre Vasseur [ 12/Oct/07 ] |
i have added a 3rd party license file that aggregates all runtime required licenses, which makes it easier when someone is using esper runtime |
[ESPER-167] Make WeakHashMap a HashMap for expiry-time based cache for SQL results Created: 06/Oct/07 Updated: 21/Dec/07 Resolved: 13/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 1.12 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Is there a reason why DataCacheExpiringImpl uses WeakHashMap to hold the |
Comments |
Comment by Thomas Bernhardt [ 06/Oct/07 ] |
|
Comment by Alexandre Vasseur [ 07/Oct/07 ] |
I would expect that if a WeakHashMap is used that is to avoid situations where a regular HashMap could cause memory leaks |
Comment by Alexandre Vasseur [ 08/Oct/07 ] |
(from user list) so this seems we should be more verbose in the doc on the memory expiry-time-cache-weak and have one be simply name as the current expiry-time-cache (the weak
|
Comment by Thomas Bernhardt [ 13/Nov/07 ] |
Soft-reference hashmap based on ReferenceMap by apache commons |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-166] Accumulating time-based data window Created: 30/Sep/07 Updated: 21/Dec/07 Resolved: 29/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.12 |
Fix Version/s: | 1.12 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Previous request: For example, consider a case where a sensor will send updates for some objects, and will also track new objects, indentified by an id. The result must aggregate across all sensor events for a given id, and aggregate the last 30 seconds after the arrival of the last sensor event. So most objects are considered for 30 seconds, but if an update happens, they are considered for a longer time. |
Comments |
Comment by Thomas Bernhardt [ 29/Oct/07 ] |
In 1.12 release |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-165] win:length_batch and win:time_batch data window combined Created: 27/Sep/07 Updated: 21/Dec/07 Resolved: 29/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.11 |
Fix Version/s: | 1.12 |
Type: | New Feature | Priority: | Major |
Reporter: | Antonel Pazargic | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
1. The event stream provides events very variable in time. Some times there are thousands per second sometime there are tens per minute; I think this new sort of filter is very suitable against flooding and starvation of client. |
Comments |
Comment by Thomas Bernhardt [ 27/Sep/07 ] |
Assigned to 1.12 |
Comment by Thomas Bernhardt [ 29/Oct/07 ] |
in 1.12 release |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-164] Quick Start tutorial doesn't work Created: 26/Sep/07 Updated: 26/Sep/07 Resolved: 26/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 1.11 |
Fix Version/s: | None |
Type: | Bug | Priority: | Trivial |
Reporter: | Leonardo M R Lima | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Using Eclipse Europa, Libs from Esper 1.11 distribution |
Number of attachments : | 0 |
Description |
There are two mistakes in Quick Start tutorial (http://esper.codehaus.org/tutorials/tutorial/quickstart.html): 2007-09-26 10:37:45,062 DEBUG [main] net.esper.timer.TimerServiceImpl .startInternalClock Starting internal clock daemon thread, resolution=100 |
Comments |
Comment by Thomas Bernhardt [ 26/Sep/07 ] |
Thanks for the corrections! |
Comment by Thomas Bernhardt [ 26/Sep/07 ] |
updated site |
[ESPER-163] Add a pause() method to EPStatement Created: 19/Sep/07 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 3.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Philip Luppens | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently, when a statement is stopped, all views are cleared. A pause state for EPStatements would not evaluate incoming events (thus cause its listeners not to get any new events), but keeps the current view rather than clearing it. When the start() method is called on the statement in paused state, it would start evaluating events again. Thread at http://archive.esper.codehaus.org/user/74ac90460709190228m4763e7f3p730d225a8a807fd0%40mail.gmail.com |
Comments |
Comment by Thomas Bernhardt [ 03/Sep/09 ] |
in 3.2 as isolated service provider |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
release as 3.2 version |
Comment by Philip Luppens [ 17/Sep/09 ] |
Thanks a lot! |
[ESPER-162] Error compile pattern with timer:interval Created: 15/Sep/07 Updated: 16/Sep/07 Resolved: 16/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | None |
Type: | Bug | Priority: | Blocker |
Reporter: | Ming Fang | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This simple test public class Test { } Causes this error Exception in thread "main" net.esper.client.EPStatementException: Invalid parameter for pattern observer: Timer-interval observer requires a single numeric or time period parameter [every timer:interval(20 sec)] |
Comments |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
I could not reproduce this problem. |
Comment by Ming Fang [ 16/Sep/07 ] |
Sorry I made a mistake. |
Comment by Thomas Bernhardt [ 16/Sep/07 ] |
Can you please elaborate when you are saying a problem at the trunk? --thanks |
[ESPER-161] add ability to specify and then subsequently retrieve the "source" of an event Created: 15/Sep/07 Updated: 04/May/08 Resolved: 04/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | New Feature | Priority: | Minor |
Reporter: | Ming Fang | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
add new sendEvent(event, "source name") |
Comments |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
Please describe the use case? |
Comment by Ming Fang [ 15/Sep/07 ] |
I see Esper as being perfect for implementing decoupled systems. |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
Changed priority to minor and assigned to 2.0 Reason is that an application can take care of that itself by adding a decorating property to events, perhaps using an Interface or abstract class. |
Comment by Thomas Bernhardt [ 04/May/08 ] |
The architectural decision is not to add a source field as the is very application specific. |
[ESPER-160] Notify listeners when no matches Created: 15/Sep/07 Updated: 21/Dec/07 Resolved: 12/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 1.12 |
Type: | New Feature | Priority: | Major |
Reporter: | Ming Fang | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In some situations it would be very useful to register to be notified when events are not matched. |
Comments |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
This can be done already with the patterns and insert-into though, I think. A pattern to detect the absence of an event is part of the solution patterns, and via insert-into I can route events into such a pattern. Such a pattern uses timer:interval and timer:within to check that no event was generated. Do you have any additional syntax or other facility in mind, or a use case that you could share? |
Comment by Ming Fang [ 15/Sep/07 ] |
I was thinking the ability to register for "un-matches" via a add/remoteUnMatchedListener(UnMatchedListener) |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
Are you suggesting the UnMatchedListener would get events that didn't get processed as any stream. Lets say we have 2 statements would the UnMatchedListener get an event I think the UnMatchedListener would get neither of these, since statement (b) matches any of these even though it filters out. Would that make the UnMatchedListener useful? Please describe the use case this is for --thanks |
Comment by Ming Fang [ 15/Sep/07 ] |
I'm actually just looking to use this to detect user error at this point. |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
assigned to 1.12 |
Comment by Thomas Bernhardt [ 12/Nov/07 ] |
New method added to EPRuntime for 1.12: /**
|
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-159] Two patterns with similar filters cause duplicates reported by one pattern Created: 08/Sep/07 Updated: 15/Sep/07 Resolved: 09/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.11 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
1. Create statement "every event1=SupportEvent(userID in ('100','101'), ( |
Comments |
Comment by Thomas Bernhardt [ 08/Sep/07 ] |
See test in net.esper.multithread.TestMTStmtTwoPatterns |
Comment by Thomas Bernhardt [ 09/Sep/07 ] |
Jar file correcting this issue is http://dist.codehaus.org/esper/esper-1.10.0c.jar |
Comment by Thomas Bernhardt [ 09/Sep/07 ] |
in 1.11 |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-158] Implement a StatementFlushCallback interface Created: 07/Sep/07 Updated: 15/Sep/07 Resolved: 10/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 1.11 |
Type: | New Feature | Priority: | Minor |
Reporter: | Scott Frenkiel | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Batch-style views, like length_batch, only emit events when they become full. For event streams that are closing, this means the last set of events are likely to be lost inside the view. Consider implementing a StatementFlushCallback, similar to StatementStopCallback, which could be sent a notification before the statement is torn down and which would allow such views the opportunity to flush out any cached events. Note that StatementStopCallback doesn't work for this purpose, as by the time the view receives the notification (at least in my case) any/all child views have already been destroyed. See |
Comments |
Comment by Thomas Bernhardt [ 10/Sep/07 ] |
In 1.11 release. It turns out the StatementStopCallback is well-suited for this. A small change to the shutdown order ensures that the callback fires first before important statement resources are freed, and a dispatch happens |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-157] the word "order" conflicts with the syntax "order by" Created: 06/Sep/07 Updated: 27/Jan/08 Resolved: 27/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Ming Fang | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
If I have a class my.Order, I would not be able to create a pattern like this "every o=my.Order". Exception in thread "main" net.esper.eql.parse.EPStatementSyntaxException: unexpected token: . near line 1, column 11 [every o=my.Order] I understand that "order by" is part of the syntax and that may be causing the conflict, |
Comments |
Comment by Thomas Bernhardt [ 13/Sep/07 ] |
Planned for 1.12 release likely with upgrade to ANTLR 3.0 |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
Moved to 2.0 release as this would either way impact EQL and must thus be in a major release, probably addressed with ANTLR 3.0 upgrade in 2.0 release |
Comment by Thomas Bernhardt [ 27/Jan/08 ] |
This will not be fixed. The "order" is a keyword in "order by ". |
[ESPER-156] Fully auditing facility Created: 06/Sep/07 Updated: 30/Jul/10 Resolved: 30/Jul/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.3 |
Fix Version/s: | 5.0 |
Type: | Wish | Priority: | Major |
Reporter: | Ming Fang | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be very useful for Esper to provide full auditing capability. I can see many uses for this |
Comments |
Comment by Ming Fang [ 06/Sep/07 ] |
typo, Full auditing facility |
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
assigned to 2.0 |
Comment by Thomas Bernhardt [ 30/Jul/10 ] |
Logging can be enabled which logs the information sought by this JIRA. The explain-plan is duplicate to JIRA 123. |
[ESPER-155] BeanEventType fails on write only property Created: 06/Sep/07 Updated: 15/Sep/07 Resolved: 06/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 1.11 |
Type: | Bug | Priority: | Major |
Reporter: | Ming Fang | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
for example, with this bean public class Order{ will throw the following exception. java.lang.NullPointerException |
Comments |
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
assigned to 1.11 |
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
in 1.11 release |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-154] Length batch - final few events clarification Created: 04/Sep/07 Updated: 10/Sep/07 Resolved: 04/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | None |
Type: | Test | Priority: | Minor |
Reporter: | Scott Frenkiel | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
First noticed this while developing my own view, but also observed in the built-in view 'length_batch'. If I set up a length_batch of length, say, 10, and submit to it 15 events, my UpdateListener never gets notification on the last 5 events. So my first question is whether or not this is by design; if not I suppose that should be recorded as a new bug. For my custom view, I don't want this behavior; I need notification on all events, even the partial batch at the end. My first thought was I could handle this by setting up a StatementStop listener in the view, but unfortunately it seems the StatementStopCallback is called too late for new notifications to be sent. Again, not sure if this is by design or not. If so, I wonder if anyone knows of a strategy I could use to notify my UpdateListener of the last (partial) batch? thanks, |
Comments |
Comment by Thomas Bernhardt [ 04/Sep/07 ] |
The length_batch view batches events until a certain number of events is reached and only when the batch is filled does the batch get posted. |
Comment by Scott Frenkiel [ 05/Sep/07 ] |
Thanks for responding. I would have expected to be able to send the last 5 events as the statement was stopped, but by the time my view is notified any child views have already been destroyed (hasViews() is false) so it is too late. just for background, the view i am writing is kind of a hybrid between ext_timed and time_batch; I want to group events into batches using the events' timestamp property. I was thinking about some alternative approaches, similar to the ones you mention:
thanks- |
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
You are right that the StatementStopCallback was designed to allow views to clean up their resources used, and wasn't designed to flush views for events. We could introduce a StatementFlushCallback to be invoked before the statement is actually stopped. Do you want to add a separate JIRA request? Would you consider contributing the new view to the project, that would be great as it would benefit everybody and would be the first test for the StatementFlushCallback? The workarounds would certainly work but would be specific to your application. |
Comment by Scott Frenkiel [ 07/Sep/07 ] |
Added I will happily submit my view. We're in a bit of a crunch right now; give me a few days to clean it up. Scott |
Comment by Thomas Bernhardt [ 10/Sep/07 ] |
We will be using the StatementStopCallback for this in the upcoming release 1.11, not introduce a StatementFlushCallback, see Esper-158 |
Comment by Thomas Bernhardt [ 10/Sep/07 ] |
in 1.11 release |
[ESPER-153] Dynamic native type generation Created: 03/Sep/07 Updated: 27/Jan/08 Resolved: 27/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.12 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently, when esper derives a stream it potentially binds the result |
Comments |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
Planned for the next major release, as it would impact the way events are delivered to listeners, as the underlying type is no longer Map (although it could still implement Map) the generated class would change the contract slightly. |
Comment by Thomas Bernhardt [ 27/Jan/08 ] |
Duplicate to |
[ESPER-152] Support for setting an instance of ExtensionServicesContext Created: 03/Sep/07 Updated: 22/Sep/09 Resolved: 22/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Karim Osman | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The user should be able to provide an instance of a class implemeting the ExtensionServicesContext interface. For example, an instance of the ExtensionServicesContext interface could be stored to the configuration properties passed to EPServiceProviderManager#getProvider(): Configuration configuration = new Configuration(); |
Comments |
Comment by Thomas Bernhardt [ 15/Nov/07 ] |
It has not been captured what the purpose is and a use case. Moved to 2.0 release. |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
[ESPER-151] Load balance listener instances Created: 31/Aug/07 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core, Performance |
Affects Version/s: | 3.0 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | luk | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently Esper calls all listener instances of an EPStatement, instead of load balancing the calls to the listener instances. Mailing list discussion: http://archive.esper.codehaus.org/user/507053.14107.qm%40web37107.mail.mud.yahoo.com |
Comments |
Comment by Thomas Bernhardt [ 27/Jan/08 ] |
This would mean a little more thread context switching which incurs a performance penalty |
Comment by Thomas Bernhardt [ 03/Sep/09 ] |
this could be done by an application itself and will not be considered as a change to the core engine. |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
[ESPER-150] Allow user-defined function's alias in group by clause Created: 31/Aug/07 Updated: 06/Sep/07 Resolved: 06/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.10 |
Fix Version/s: | None |
Type: | New Feature | Priority: | Minor |
Reporter: | Scott Frenkiel | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A statement like the following doesn't work: select UtilFuncs.func(metric) as grp, * from Stream group by grp the following will work, but is more complicated than necessary: select UtilFuncs.func(metric) as grp, * from Stream group by UtilFuncs.func(metric) |
Comments |
Comment by Thomas Bernhardt [ 01/Sep/07 ] |
Changed to new feature as not all database systems offer this, and order-by, having and other clauses could also benefit from allowing an alias to appear |
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
Is actually a duplicate to Esper-120, comment has been copied to 120 and issue closed |
[ESPER-149] Automatic bean aliases by specifying imports Created: 29/Aug/07 Updated: 15/Sep/07 Resolved: 10/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 1.11 |
Type: | Improvement | Priority: | Minor |
Reporter: | Philip Luppens | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I was wondering about the following; right now we can add aliases for beans, and imports for helper functions, but I cannot seem to automatically import event beans. The case: a lot of event beans, a lot of entries in esper.cfg.xml, and of course, often changing event names, and new events being introduced all the time. I tried using some classpath discovery to configure the Configuration programmatically, but it does not feel elegant, and has the obvious classloading issues when testing under app containers. The request: automatically alias com.foo.bar.SuperEvent to SuperEvent when a 'com.foo.bar.* ' import is used. If multiple imports are used, loop over them to find the correct Event (or fail if multiple classes are resolved). I've taken a quick look, but I'm not really sure where the aliasing is happening - is in in the ConfigurationSnapShot() ? It would seem like an easy enough fix, but my experience with ast is too limited to be of any use here. |
Comments |
Comment by Thomas Bernhardt [ 30/Aug/07 ] |
I think we would handle this through a new method on ConfigurationOperations and through XML schema enhancements. |
Comment by Thomas Bernhardt [ 10/Sep/07 ] |
in 1.11 |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-148] Step by Step Installation and Quick Start Guide Created: 29/Aug/07 Updated: 15/Sep/07 Resolved: 11/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.11 |
Type: | Wish | Priority: | Major |
Reporter: | Sanjeev Katoch | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
First Release |
Number of attachments : | 0 |
Description |
With first Release of esper the expectations are high from the user side. we nee to have installation Step by Step guid and Quick Start Guide. |
Comments |
Comment by Philip Luppens [ 29/Aug/07 ] |
What parts of the documentation would you like to see improved ? I agree that the 'Tutorial' should also contain an installation & configuration part rather than just some EQL statements (kinda like the OnJava article). A step-by-step guide seems overkill (after all, Esper is easy to set up) & nearly everything else is covered by the reference documentation, imho. |
Comment by Thomas Bernhardt [ 30/Aug/07 ] |
We could add a steps guide how to create EDA appls:
|
Comment by Thomas Bernhardt [ 10/Sep/07 ] |
Change "Tutorial" to "Tutorial & Quick Start"
|
Comment by Thomas Bernhardt [ 11/Sep/07 ] |
in 1.11 |
Comment by Alexandre Vasseur [ 11/Sep/07 ] |
this highly relates to ship a -bin distrib that contains only doc + compiled jars (and may be another one with samples added such as bin-samples ) instead of the current src+doc+samples+compiled |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-147] Sorted time window for more flexibility in handling out-of-order events Created: 23/Aug/07 Updated: 21/Dec/07 Resolved: 29/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.12 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
> > > Can esper cope with timing of events? ========== > > Well, that's not too hard. You can simple compare the timestamp ======== > > The pattern with an OR is one good way to deal with the out-of-order ========= ========== Some questions: Which format would the timestamp need to be in, a |
Comments |
Comment by Thomas Bernhardt [ 29/Oct/07 ] |
in 1.12 release |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-146] Upload Esper to the central Maven2 repository Created: 23/Aug/07 Updated: 01/Oct/07 Resolved: 01/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.11 |
Type: | Task | Priority: | Minor |
Reporter: | Olle Hallin | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Since Esper is built with Maven2, it would be very convenient for us Maven2 users if the released artifacts were uploaded to the central Maven2 repository. See http://jira.codehaus.org/browse/MAVENUPLOAD . |
Comments |
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
assigned to 1.11 |
[ESPER-145] Ignore start or stop commands on already started or stopped EPStatements. Created: 20/Aug/07 Updated: 18/Feb/08 Resolved: 13/Feb/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Philip Luppens | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently, EPStatements throw exceptions when attempting to start or stop them, when they are already started or stopped. It would make more sense to simply ignore a start or stop request when the EPStatement is already in the requested state. Another small improvement might be to create is-methods to check the state in a more concise way (isStarted(), isStopped() and isDestroyed()). See the mailing list [1]. [1] http://archive.esper.codehaus.org/user/74ac90460708160635h5ae189afob568b457216c5482%40mail.gmail.com |
Comments |
Comment by Thomas Bernhardt [ 10/Sep/07 ] |
The suggested change is a change to the behavior or public interface methods that we can only make in a major version. |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-144] Add timestamp() function to select the current engine time Created: 17/Aug/07 Updated: 15/Sep/07 Resolved: 10/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.11 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In our application, we use external-timing and our application itself also BTW, how would you set the timestamp-prperty of implicitly generated events ============ Perhaps it would be better as a builtin function? I.e. "select timestamp(), |
Comments |
Comment by Thomas Bernhardt [ 10/Sep/07 ] |
This will be implemented as "select current_timestamp()" following SQL-92 standards |
Comment by Thomas Bernhardt [ 10/Sep/07 ] |
in 1.11 |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-143] Add a timestamp with last state change in EPStatement Created: 14/Aug/07 Updated: 15/Sep/07 Resolved: 10/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 1.11 |
Type: | New Feature | Priority: | Minor |
Reporter: | Philip Luppens | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be useful to know when an EPStatement changed state (started, stopped, or destroyed). |
Comments |
Comment by Thomas Bernhardt [ 10/Sep/07 ] |
In 1.11 |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-142] Relational Database Access does not work with Oracle JDBC Created: 09/Aug/07 Updated: 15/Sep/07 Resolved: 10/Aug/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | agostino perrotta | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP, Oracle 10g or Oracle 9.2, JDK 1.5.0_04 |
Number of attachments : | 0 |
Description |
I'm trying to access a Oracle Relational Database in order to retrieve historical data but without success. "....net.esper.client.EPStatementException: error starting view: Error obtaining parameter metadata from prepared statement....." I've checked the behaviour (with a test program) of Oracle JDBC drivers when you have to deal with metadata and I've found that the only metadata that it's not possible to retrieve with ResultSetMetaData is "tableName". Our standard DB is Oracle !! Kind regards, |
Comments |
Comment by Thomas Bernhardt [ 09/Aug/07 ] |
In reproducing this problem, the stack trace is as follows. Occurs with Oracle JDBC Driver version 9.0.2 "ojdbc14.jar" java.sql.SQLException: Unsupported feature |
Comment by Thomas Bernhardt [ 09/Aug/07 ] |
Same issue using the newest driver This appears an old issue with Metadata and Oracle drivers: http://www.webservertalk.com/archive149-2005-2-927274.html 09:46:28,171 ERROR [PollingViewableFactory] Error in statement 'select myint from "testtable" where ? = myint', failed to obtain result metadata |
Comment by Thomas Bernhardt [ 09/Aug/07 ] |
The issue is that the Esper engine requires the query result metadata to build an event type, and to use the types returned by the SQL statement to verify the expressions in the select-clause and other clauses of the EQL statement. Even the newest Oracle driver (see JIRA comments) does not return the metadata. We are planning to add a configuration item. If configured, the engine would not use to getMetadata for parameter and result metadata on a prepared statement. If configured, the engine would fire the SQL query with a where clause of "where 1=0" and then obtain the result column types form the actual empty result set. |
Comment by Thomas Bernhardt [ 10/Aug/07 ] |
This problem is address by the updated esper-1.10.0b.jar file downloadable at http://dist.codehaus.org/esper/esper-1.10.0b.jar The problem is rooted in the Oracle drivers not supporting retrieving SQL statement metadata on a SQL prepared statement after SQL prepared statement compilation. However, the engine must obtain metadata for the output columns of the SQL statement to determine output event types. At EQL statement compilation times the engine therefore prepares the SQL statement and attempts to inspect metadata. This problem has been addressed the following way: The engine detects an Oracle-connection and by default generates a "sample" statement that it executes at EQL statement complile time against the database and obtains the executed statement metadata. The engine uses "sample" statement to retrieve metadata for the column names and types returned by the actual statement. It uses the "sample" statement from any of these sources: The following additional Configuration options have been added to ConfigurationDBRef: |
Comment by Vinod Akunuri [ 30/Aug/07 ] |
Just wanted to check if relational database access has been tested with kdb database ever. I gave it a shot, with esper-1.10.0b.jar to access kdb, using a driver from http://kx.com/a/kdb/connect/jdbc/ Vinod 2007-08-30 16:14:16,566 [main] INFO PollingViewableFactory - .getPreparedStmtMetadata Preparing statement 'select * from testtable' Exception in thread "main" net.esper.client.EPStatementException: Error starting view: Error obtaining parameter metadata from prepared statement, consider turning off metadata interrogation via configuration, for statement 'select * from testtable', please check the statement, reason: nonce [select * from sql:TestKDB ['select * from testtable']] |
Comment by Thomas Bernhardt [ 30/Aug/07 ] |
With the 1.10.0b jar file there is a couple of workarounds when the driver doesn't supply metadata, as described in the prior comment. |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-141] Memory leak using CreateMapFromValues function and and EventAdaptorServiceBase Created: 07/Aug/07 Updated: 11/Aug/07 Resolved: 11/Aug/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | lixinhui | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP computer (Intel Pentium 4, 2.4 GHz, 1024 MB RAM |
Number of attachments : | 0 |
Description |
we run the case of " In current Esper, Every event is encapsulated into a instance of MapEventBean, which is put into HashMap for succeed handling. These instaces will not out of date bwfore a long time and no support of disk, 5days or 10days. So these Large amount of objects have to stay into memory for a long time and new obcjects swarm into continously. we d proposed to fix it by a time Expriement and backup based on Thread writting out mechanism, but it can not really be donet without the suggestions from the designers of Esper since the information is copied and cached in differnet place in current framework. |
Comments |
Comment by Thomas Bernhardt [ 11/Aug/07 ] |
It is definitly possible to hit Java VM memory boundaries when too many events must be processed and held in memory for one or another reason, such as for long time windows. The need for memory can be reduced by designing tiny events that have a small memory footprint. Please contact the user mailing list by sending an email to "user@esper.codehaus.org" so we may continue this discussion over the mailing list. Through the mailing list we may find a better solution to this. Thank you for any prior suggestions. |
[ESPER-140] Memory leak using add function and Time Window Created: 07/Aug/07 Updated: 11/Aug/07 Resolved: 11/Aug/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | lixinhui | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP computer (Intel Pentium 4, 2.4 GHz, 1024 MB RAM |
Number of attachments : | 0 |
Description |
we run the case of " The entry point of out nanlysis is the function "add" of TimeWindow. During this function, LinkedList<EventBean> reserved by Pair is copied into EventBean[] to later deal with once expired. But the LinkedList<EventBean> reserved by Pair is not released. This problem is fixed by adding two sentences into the Pair, "Pair.getSecond().clear();expired=null;" , which are used to release the expired LinkedList by setting it to null. |
Comments |
Comment by Thomas Bernhardt [ 11/Aug/07 ] |
Thanks for the suggestion. When the TimeWindow gets rid to the timestamp-keyed pair including the LinkedList during expireEvents then the memory gets freed. |
[ESPER-139] Memory leak using handleEvent function and and GroupByView Created: 07/Aug/07 Updated: 11/Aug/07 Resolved: 11/Aug/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | lixinhui | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Windows XP computer (Intel Pentium 4, 2.4 GHz, 1024 MB RAM) |
Number of attachments : | 0 |
Description |
Running the case provided by " By deeper analysis, find the leaking involoves MultiKey,HashMap$Entry,Object[], LinkedList, LinkedList$Entry, LengthWindowView, IStreamRandomAccess, TimeWindowView, and TimeWindow. It is found that the event handling mechanism should be blame. Whenever a new event is received in version 1.10.0, a new LinkedList will be created containing a list of views related with this event, such as those used to present the content of this event. Then one mapping item between the LinkedList and Event is put into a HashMap with an exclusive key. Actually, any event can be clarified belonging to one pattern and every pattern is related with a only steady linklist of views. It is not necessary to allocate new LinkedList every time for every event. Even worse, these large amounts of LinkedLists have to be reserved in memory until the event is out of date. To fix this leak, a new member variable was added into GroupByView (private List<View> subViewsList = new LinkedList<View>(). This variable is assigned for every pattern during the initial time and is referred when an event is received based on its pattern. In this way, the repetitious allocations of large amount of objects are avoided. |
Comments |
Comment by Thomas Bernhardt [ 11/Aug/07 ] |
Thanks again for the suggestions. The allocation of the linked lists in GroupByView on line 152 is per multikey, and are reused for subsequent multikeys. So no memory leak unless one keeps generating new groups. |
[ESPER-138] Allow Map event type to contain nested Map values Created: 06/Aug/07 Updated: 18/Feb/08 Resolved: 13/Feb/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I do not see how to query nested maps with EQL. Consider the following example: Order and Product are classes that extend HashMap. An order map contains a product. A product map contains a ticker Order events containing products are sent to Esper. How does one query against the nested map, i.e. "select product.ticker TestOrder where product.underlying = 'thename'"? The method epService.getEPRuntime().sendEvent(ORDER_FOR_VANILLA_CALL, "TestOrder"); relates an event to its map name, but there is no way to do this with nested maps. What are common alternatives or workarounds? Can the nested element be submitted as a separate event? =============== One correction, the example query should be "select product from TestOrder where product.ticker = 'IBM'? So essentially, I am asking how to handle a map of maps. |
Comments |
Comment by Thomas Bernhardt [ 06/Aug/07 ] |
We hadn't thought of the idea of using Maps within Maps to represent complex domain object graphs. If this is an emergency, please let us know, the capability seems easy to add. |
Comment by Thomas Bernhardt [ 13/Sep/07 ] |
in 1.11 |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
Comment by Scott Frenkiel [ 08/Jan/08 ] |
It seems this issue has been fixed for 1.11, but I'm having trouble understanding how to use it. How do you define the event type with its nested elements via configuration? The docs don't seem to address this. Should the class type for the nested property be Map.class? And does the nested map itself need to be defined as a separate event type? Thanks. PS I took a stab at it as follows, to give you an idea of my confusion: Configuration configuration; { Map<String, Class> nestedMap = new HashMap<String, Class>(); nestedMap.put("int", int.class); Map<String, Class> eventMap = new HashMap<String, Class>(); eventMap.put("nested", Map.class); configuration = new Configuration(); configuration.addEventTypeAlias("nested", nestedMap); configuration.addEventTypeAlias("event", eventMap); } EPServiceProviderSPI epService = (EPServiceProviderSPI) EPServiceProviderManager.getProvider("engine", configuration); EPStatement statement = epService.getEPAdministrator().createEQL("select * from event where nested.int = 2"); At this point the statement fails to compile. |
Comment by Thomas Bernhardt [ 08/Jan/08 ] |
The documentation is incomplete on the nested/indexed/mapped property support for Maps, right. We'll reopen this issue to investigate if type-safe nested Map could be supported and to add to the documentation. |
Comment by Thomas Bernhardt [ 08/Jan/08 ] |
May further improve nested-Maps by allowing properties themselves to be declared as a well-defined Map event type |
Comment by Thomas Bernhardt [ 13/Feb/08 ] |
In release 2.0 There is a limitation that is inherent to all non-POJO events (DOM and Map) (closer integration with Java brings benefits and costs): insert into MyStream select root.nestedOne as value from NestedMapEvent |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-137] GROUP BY: strange behaviour in UpdateListener Created: 06/Aug/07 Updated: 11/Aug/07 Resolved: 11/Aug/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Critical |
Reporter: | agostino perrotta | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Sun SDK 1.5.0_04, Windows XP SP2 |
Number of attachments : | 0 |
Description |
Hi. // Reservation Events status change, aggregation, sla definition and DB cache update The second statement (stmt11) gave me a strange result since I receive in my listener the correct result/update but immediatly after 2/3 seconds I receive an update with null (or zero) values. Regards, |
Comments |
Comment by Thomas Bernhardt [ 06/Aug/07 ] |
I have tried to reproduce this problem using the 1.10 version but haven't been able to get the same result. The relevant test class is net.esper.regression.db.TestDatabaseJoinInsertInto (SVN trunk), as below. Since the pattern checks every 20 seconds and the time-batch outputs every 10 seconds, the result is that only every second time that the time batch statement produces outputs, does the query produce real results, since the time batch empties in between thus producing zero counts every second time? package net.esper.regression.db; import junit.framework.TestCase; import java.util.Properties; public class TestDatabaseJoinInsertInto extends TestCase public void setUp() { ConfigurationDBRef configDB = new ConfigurationDBRef(); configDB.setDriverManagerConnection(SupportDatabaseService.DRIVER, SupportDatabaseService.FULLURL, new Properties()); configDB.setConnectionLifecycleEnum(ConfigurationDBRef.ConnectionLifecycleEnum.RETAIN); configDB.setConnectionCatalog("test"); configDB.setConnectionReadOnly(true); configDB.setConnectionTransactionIsolation(1); configDB.setConnectionAutoCommit(true); Configuration configuration = SupportConfigFactory.getConfiguration(); configuration.addDatabaseReference("MyDB", configDB); epService = EPServiceProviderManager.getDefaultProvider(configuration); epService.initialize(); epService.getEPRuntime().sendEvent(new TimerControlEvent(TimerControlEvent.ClockType.CLOCK_EXTERNAL)); }public void testInsertIntoTimeBatch() { epService.getEPRuntime().sendEvent(new CurrentTimeEvent(0)); StringBuilder sb = new StringBuilder(); sb.append("insert into ReservationEvents(type, cid, elapsed, series) "); sb.append("select istream 'type_1' as type, C.myvarchar as cid, C.myint as elapsed, C.mychar as series "); sb.append("from pattern [every timer:interval(20 sec)], "); sb.append("sql:MyDB [' select myvarchar, myint, mychar from mytesttable '] as C "); epService.getEPAdministrator().createEQL(sb.toString()); // Reservation Events status change, aggregation, sla definition and DB cache update sb = new StringBuilder(); sb.append("insert into SumOfReservations(cid, type, series, total, insla, bordersla, outsla) "); sb.append("select istream cid, type, series, "); sb.append("count(*) as total, "); sb.append("sum(case when elapsed < 600000 then 1 else 0 end) as insla, "); sb.append("sum(case when elapsed between 600000 and 900000 then 1 else 0 end) as bordersla, "); sb.append("sum(case when elapsed > 900000 then 1 else 0 end) as outsla "); sb.append("from ReservationEvents.win:time_batch(10 sec) "); sb.append("group by cid, type, series order by series asc"); EPStatement stmt = epService.getEPAdministrator().createEQL(sb.toString()); listener = new SupportUpdateListener(); stmt.addListener(listener); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(20000)); assertFalse(listener.isInvoked()); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(30000)); EventBean[] received = listener.getLastNewData(); assertEquals(10, received.length); listener.reset(); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(31000)); assertFalse(listener.isInvoked()); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(39000)); assertFalse(listener.isInvoked()); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(40000)); received = listener.getLastNewData(); assertEquals(10, received.length); listener.reset(); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(41000)); assertFalse(listener.isInvoked()); }} |
Comment by Thomas Bernhardt [ 11/Aug/07 ] |
Couldn't reproduce and provided test case. |
[ESPER-136] Improve error messages when encountering reserved keywords Created: 01/Aug/07 Updated: 18/Feb/08 Resolved: 27/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I find that some error messages for invalid statements are sometimes ------------------- net.esper.eql.parse.EPStatementSyntaxException: unexpected token: foo It took me a while to realize that this is due to "millisecond" being |
Comments |
Comment by Thomas Bernhardt [ 01/Aug/07 ] |
I see two possible solutions:
|
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
We will include a tip in the error messages for 1.11, however since the grammar is not accessible this will need to be addresses with the move to ANTLR 3, assigned to release 2.0 |
Comment by Thomas Bernhardt [ 27/Jan/08 ] |
In release 2.0 with ANTLR upgrade |
Comment by Thomas Bernhardt [ 18/Feb/08 ] |
in release 2.0 |
[ESPER-135] Support unchecked/dynamic properties; Support Java instanceof and casts Created: 31/Jul/07 Updated: 15/Sep/07 Resolved: 09/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.11 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'm wondering what the best way is to formulate queries where I'm interested if a property value is of a certain type, and if so, whether it contains a particular value. For example, assuming I'm using the following classes: public class Event { public A getA(); }public class A { } public class B extends A { public String getData(); }...the query I'm interested in is along the lines of: select * from Event where a instanceof B and ((B)a).data = "someValue" ============== The Esper EQL syntax doesn't currently allow the Java 'instanceof' and doesn't support casts. Sounds like this could be useful to add to the syntax? A possible workaround is to write a static method that performs the same functions. |
Comments |
Comment by Thomas Bernhardt [ 26/Aug/07 ] |
This mail is seeking feedback to extend EQL adding unchecked property access to the language. The idea is that for a given underlying event representation we don't always know all properties in advance. An underlying event (Bean, Map, XML) may have additional properties that are not known at statement compilation time, that we want to query on. Some of these properties can itself be nested classes. This can be useful for events that are a nice, object-oriented domain models. Let's look at an Order event that could contain a reference to either Service or Product, depending on whether a product or service was ordered. One solution seems to add an "instanceof" and a cast capability, however statements may get hard to read: It seems possible to slap an Interface on the object returned by "item", that has a "getName" method, and then use: However that is bending the domain model. And what if an Order contains something else then Product or Service in the future? A possible new syntax places the unchecked property in parenthesis: Using this new syntax would instruct the engine that there is an optional name property that may or may not exist at runtime. |
Comment by Thomas Bernhardt [ 28/Aug/07 ] |
Sounds like a good idea. How would you declare multiple deep nested Maybe another is this: ========================= I agree, the parenthesis seem to lead to confusion, since they appear to provide a grouping. I like your second suggestion in using the questionmark alone. // Optional 'name' property on item // Optional 'item' property // Example in a select clause |
Comment by Thomas Bernhardt [ 09/Sep/07 ] |
in 1.11 |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-134] EPException using std:groupby without child view Created: 30/Jul/07 Updated: 15/Sep/07 Resolved: 06/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.11 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This bug occurs when declaring a group-by view without any child views: select avg(price), symbol from StockTick.win:length( 100 ).std:groupby('symbol') Exception in thread "main" net.esper.client.EPException: 06:20:44,062 FATAL [GroupByView] .copySubViews Unexpected merge view as child of group-by view net.esper.client.EPException: net.esper.client.EPException: Unexpected merge view as child of group-by view |
Comments |
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
in 1.11 |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-133] stats broken, download likely broaken Created: 29/Jul/07 Updated: 06/Sep/07 Resolved: 06/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Alexandre Vasseur |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
As codehaus as changed policy the index.php magic folder list is broken |
Comments |
Comment by Alexandre Vasseur [ 29/Jul/07 ] |
need to rework it with 2 static pages (current and prior-release), and to use google analytic onclick |
[ESPER-132] Support comments inside the statement text Created: 25/Jul/07 Updated: 28/Aug/07 Resolved: 28/Aug/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 1.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have a minor request for support of comments inside the statement select xx, /* blah */ Of course the choice of comment character doesn't have to be '/* .. */' Now, this may not look useful when you are creating statements in the I realize that one could write a simple utility function that strips out |
Comments |
Comment by Thomas Bernhardt [ 28/Aug/07 ] |
Already supported |
Comment by Thomas Bernhardt [ 28/Aug/07 ] |
Comments are already supported. // same-line comments or /* in-line comments */ Documentation set to be updated |
[ESPER-131] Namespace problem using XML events and XPath properties Created: 25/Jul/07 Updated: 15/Sep/07 Resolved: 25/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 1.11 |
Type: | Bug | Priority: | Major |
Reporter: | Paul Fremantle | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Here is my XML event: Here is my Esper config: If I do my own XPath it works. If I use the commented out xpath-prop then it also works. However, given the config as above and this statement: |
Comments |
Comment by Thomas Bernhardt [ 25/Jul/07 ] |
Added test in trunk in net.esper.regression.event.TestNoSchemaXMLEvent |
Comment by Thomas Bernhardt [ 25/Jul/07 ] |
The test XML: The "symbol" is under "request" thus the query "select request.symbol from StockQuote" can works with no namespaces, however "select symbol from StockQuote" should not work. The XPath must include the namespace, note the "m0" before the "symbol": The namespace prefix mapping did not work correctly for XML types that didn't have a schema associated, the code changes for this has been made. With namespaces, the query "select request.symbol from StockQuote" cannot work as the namespace cannot be supplied unless one uses XPath. |
Comment by Thomas Bernhardt [ 25/Jul/07 ] |
The change was made to class "SimpleXMLEventType" that now populates the XPathNamespaceContext before compiling explicit XPath properties. Let us know if you require a jar file with this correction. |
Comment by Thomas Bernhardt [ 26/Jul/07 ] |
An additional change was made such that the following query works with the default namespace prefix: The engine now takes the default namespace's prefix and constructs XPath expressions for properties using that prefix. Thus the property name |
Comment by Paul Fremantle [ 26/Jul/07 ] |
Great! Thanks for the responsive fixes. Paul |
Comment by Thomas Bernhardt [ 26/Jul/07 ] |
In addition, we want to support "deep" resolution of properties. We are planning to provide this additional setting: /**
By setting this value to true, the following statement resolves the symbol property using XPath "//symbol": |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-130] Problem using Namespaces with XML Created: 25/Jul/07 Updated: 25/Jul/07 Resolved: 25/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Paul Fremantle | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Paul Fremantle [ 25/Jul/07 ] |
This is a duplicate of 131 created by mistake. Please delete |
Comment by Thomas Bernhardt [ 25/Jul/07 ] |
Close, was duplicate of 131 |
[ESPER-129] DOM expects a Document, no error checking if not Created: 25/Jul/07 Updated: 15/Sep/07 Resolved: 25/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 1.11 |
Type: | Bug | Priority: | Major |
Reporter: | Paul Fremantle | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
When I use the DOM XML approach to pass events to Esper, I pass in a Node object but it then does this with it: rootElementName = namedNode.getLocalName(); if (rootElementName == null) { rootElementName = namedNode.getNodeName(); } It seems to me it should do: if (node instanceof Document) { namedNode = ((Document) node).getDocumentElement(); } else if (node instanceof Element) |
Comments |
Comment by Thomas Bernhardt [ 25/Jul/07 ] |
In release 1.11, code change in SVN trunk |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-128] test folders Created: 19/Jul/07 Updated: 11/Aug/07 Resolved: 11/Aug/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 1.10 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
net.esper.regression.adapter.TestCSVAdapter is in esper/test but depends on esperIO net.esper.adapter.csv.* |
[ESPER-127] Joining Relational Data via SQl Created: 16/Jul/07 Updated: 06/Aug/07 Resolved: 06/Aug/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.9 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | agostino perrotta | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hi. I've defined an XML event (see configuration below): <event-type alias="smevent"> I tried to correlate events of type "smevent" and everything was fantastic...I got what I expected. String stmt = "select istream cname, igroup, sla, count as total "+ Afterwords I decided to join these events with SQL data (stored in a table of a HSQLDB instance) therefore <database-reference name="MYDB"> In the database I've defined a table with 2 fields:
I used the following EQL statement (according to the reference manual that come along with the software): String stmt = "select istream cid, cust_name, igroup, sla, count as total "+ '] "+ .....but in the EventBean I received in the UpdateListener the field "cust_name" is I tried to use an outer join too but without success ! Thanks in advance for your help. Regards, |
Comments |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
Hi Niko, I have tried reproducing your problem in my environment but wasn't able to get the same problem. My test code is as below. Can you please try the test code in your environment to see if you encounter a problem? It may also be possible that the "cid" type conversion in your SQL between your database and the XPath property value may create mismatching types, perhaps try changing the SQL query to explicitly convert types? Regards public void testEsper127() Map<String, Class> props = new HashMap<String, Class>(); epService.getEPAdministrator().getConfiguration().addEventTypeAlias("smevent", props); sendTimer(0); '] "+ EPStatement stmt = epService.getEPAdministrator().createEQL(stmtText); Map<String, Object> event = new HashMap<String, Object>(); sendTimer(3000); |
Comment by Thomas Bernhardt [ 06/Aug/07 ] |
Closed, no issue |
[ESPER-126] Allow null statement name for createPattern Created: 16/Jul/07 Updated: 19/Jul/07 Resolved: 16/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.10 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently throws an IllegalArgumentException, however the statement name is optional since createPattern(text) exists |
Comments |
Comment by Thomas Bernhardt [ 16/Jul/07 ] |
In 1.10 |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-125] IllegalStateException in a self-joining statement without join condition using sorted window Created: 07/Jul/07 Updated: 21/Dec/07 Resolved: 15/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.12 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I came up with the following query which works well, but only if I ignore the IllegalStateException from the remove method of net.esper.collection.SortedRefCountedSet. Do you think it's ok to ignore this exception or do you think there's another underlying problem? This query has the advantage that the number of unique values for Sensor.device may vary and the query still outputs the correct values. Note that this use case calculates the min and max of Sensor.measurement across unique devices. I found that I had to surround each property I output with an aggregate function to ensure that I only got a single row as output. I was happy to see that this worked, even for String types, but maybe there's a better way? Since there should be only a single value in the window of the view, would it make sense to have a current() aggregate function? SELECT max(high.type) as type, net.esper.client.EPException: java.lang.IllegalStateException: Attempting to remove key from map that wasn't added I'm using release 1.9. I've included the test case below along with the exception and trace log. The use case is to output the min and max measurements across unique devices (partitioned by the type of device). The additional somewhat tricky part (at least for me) was to output the corresponding confidence and device property values that were part of the event containing the min and max values. Here's the test case: package test.pattern; import java.util.ArrayList; import net.esper.client.Configuration; import org.apache.commons.logging.Log; import junit.framework.TestCase; public class TestSensorQuery extends TestCase { private Configuration setup() { Configuration config = new Configuration(); config.addEventTypeAlias("Sensor", Sensor.class); return config; }private void logEvent (Object event) { log.info("Sending " + event); } public void testSensorQuery() throws Exception { EPServiceProvider epService = EPServiceProviderManager.getProvider("testSensorQuery", configuration); EPStatement stmt = epService.getEPAdministrator().createEQL(stmtString); EPRuntime runtime = epService.getEPRuntime(); Map lastEvent = (Map) listener.getLastEvent(); static public class Sensor { public Sensor() { public Sensor(String type, String device, Double measurement, Double confidence) { this.type = type; this.device = device; this.measurement = measurement; this.confidence = confidence; }public void setType(String type) { this.type = type; }public String getType() { return type; }public void setDevice(String device) { this.device = device; }public String getDevice() { return device; }public void setMeasurement(Double measurement) { this.measurement = measurement; }public Double getMeasurement() { return measurement; }public void setConfidence(Double confidence) { this.confidence = confidence; }public Double getConfidence() { return confidence; } private String type; class MatchListener implements UpdateListener { public void update(EventBean[] newEvents, EventBean[] oldEvents) { count++; count--; public int getCount() { return count; }public Object getLastEvent() { return lastEvent; }} private static final Log log = LogFactory.getLog(TestSensorQuery.class); Here's the exception that occurs: net.esper.client.EPException: java.lang.IllegalStateException: Attempting to remove key from map that wasn't added Here's the output log: 17:52:35,968 INFO [TestSensorQuery] testSensorQuery........... Here's the output log I get (which is correct) if I ignore the exception: 17:50:20,812 INFO [TestSensorQuery] testSensorQuery........... |
Comments |
Comment by Thomas Bernhardt [ 07/Jul/07 ] |
this is definitely one of the most complex statements I have seen solving a use case in a single statement. It may be possible to use insert-into to just make this query more modular and understandable. I have created a JIRA issue for tracking this issue at http://jira.codehaus.org/browse/ESPER-125 There are 2 workarounds that I can see. One, it seems the statement can be split up via insert-into as follows. The test works fine. SELECT max(high.type) as type, Second and perhaps the less desirable option is to ignore the exception as I don't see it impact the building of results. |
Comment by Thomas Bernhardt [ 15/Nov/07 ] |
Removed assertion; Version 2 will provide a checker for data window combinations |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-124] IllegalStateException in a grouped time window using the prior function Created: 04/Jul/07 Updated: 19/Jul/07 Resolved: 14/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.10 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Exception in thread "Timer-0" java.lang.IllegalStateException: Event not currently in collection, event=BeanEventBean eventType=BeanEventType clazz=info.noahcampbell.linearroad.streamdata.PositionReport bean=info.noahcampbell.linearroad.streamdata.PositionReport@ae4d8 |
Comments |
Comment by Thomas Bernhardt [ 07/Jul/07 ] |
Has not been reproduced outside of user environment, working on it |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-123] Provide an "Explain Plan" method to EPStatement Created: 04/Jul/07 Updated: 19/Jan/11 Resolved: 07/Dec/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 4.1 |
Fix Version/s: | 4.1 |
Type: | New Feature | Priority: | Trivial |
Reporter: | Noah Campbell | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A programmatic way to access if a particular statement is will perform well. |
Comments |
Comment by Thomas Bernhardt [ 11/Aug/07 ] |
Tentativly assigned to release 2.0 Some of the infomation can already be derived by turning on info-level logging for the join plan package. |
Comment by Thomas Bernhardt [ 03/Sep/09 ] |
Since the debug output contain this information, changed to Trivial |
Comment by Thomas Bernhardt [ 07/Dec/10 ] |
In 4.1 we added the show plan logging configuration. |
[ESPER-122] IllegalArgumentException in a join statement between same-typed map-underlying events Created: 04/Jul/07 Updated: 19/Jul/07 Resolved: 04/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.10 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have an event stream called PositionReport that contains various Essentially these 3 "views" are recombined back into two more views, Exception in thread "Timer-0" java.lang.IllegalArgumentException: Since all these new streams originate from the original |
Comments |
Comment by Thomas Bernhardt [ 04/Jul/07 ] |
> I'm using different stream names. Here are my EQL statements: ======== The "lav" and "cars" in the join are unlimited streams and thus may lead to out-of-memory since the join is required to keep-all. Consider using a the last event view for both streams, i.e. "lav.std:lastevent()" and "cars.std:lastevent()" or another data window view to limit the streams. I think the last element view also fixes the exception. |
Comment by Thomas Bernhardt [ 04/Jul/07 ] |
see test TestJoinMapType |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-121] Filter expression not evaluating correctly after optimization and using multiple pattern subexpression results Created: 02/Jul/07 Updated: 19/Jul/07 Resolved: 04/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.10 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I would like to use the following pattern to match 3 events which occur tradeevent1=FxTradeEvent(userId in ('U1000','U1001','U1002') ) -> ( ('U1000','U1001','U1002') and userId != tradeevent1.userId and userId != The events that come through include those where the same user has traded ============ I am using Esper 1.9.0. Sorry - I missed off the "every" keyword in my pattern. Taking your test import java.util.Random; public class TestEventPattern extends TestCase { private EPServiceProvider epService; protected void setUp() throws Exception { Configuration config = new Configuration(); config.addEventTypeAlias("FxTradeEvent", SupportTradeEvent.class .getName()); epService = EPServiceProviderManager.getProvider( "testRFIDZoneEnter", config); epService.initialize(); String expression = "every tradeevent1=FxTradeEvent(userId in ('U1000','U1001','U1002') ) -> " + "(tradeevent2=FxTradeEvent(userId in ('U1000','U1001','U1002') and " + " userId != tradeevent1.userId and " + " ccypair = tradeevent1.ccypair and " + " direction = tradeevent1.direction) -> " + " tradeevent3=FxTradeEvent(userId in ('U1000','U1001','U1002') and " + " userId != tradeevent1.userId and " + " userId != tradeevent2.userId and " + " ccypair = tradeevent1.ccypair and " + " direction = tradeevent1.direction)" + ") where timer:within(600 sec)"; EPStatement statement = epService .getEPAdministrator().createPattern(expression); listener = new SupportUpdateListener(); statement.addListener(listener); }public void testDifferentUserTrades() { Random random = new Random(); ; ; ; for (int i=0; i <1000; i++) { epService.getEPRuntime().sendEvent(new SupportTradeEvent(users[random.nextInt(users.length)], ccy[random.nextInt(ccy.length)], direction[random.nextInt(direction.length )])); } System.out.println("Bad Matches="+listener.badMatchCount + protected void tearDown() throws Exception { super.tearDown(); }private class SupportUpdateListener implements UpdateListener { private int badMatchCount; public void update(EventBean[] newEvents, EventBean[] } private void handleEvent(EventBean eventBean) { if (( else { goodMatchCount++; }} } } |
Comments |
Comment by Thomas Bernhardt [ 02/Jul/07 ] |
Thanks for the additional test code. I have created a JIRA issue for tracking at http://jira.codehaus.org/browse/ESPER-121 The issue lies in the fact that the filter expression optimization decides on a certain strategy that doesn't execute correctly for a pattern that produces multiple events for consideration in the filter, if there are multiple such sub-expressions – not an easy to explain problem I guess There is a simple workaround to the issue: by using the "not in" instead of not equals "!=" in the 3rd filter parameter list. The following statement behaves correctly in the tests: String expression = "every tradeevent1=FxTradeEvent(userId in ('U1000','U1001','U1002') ) -> " + |
Comment by Thomas Bernhardt [ 04/Jul/07 ] |
See test TestUseResultPattern.testFollowedByFilter |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-120] Allow use of the field aliases for removing repeat computations in the select Created: 29/Jun/07 Updated: 31/Mar/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 4.2 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
We could create an enhancement request, enhancing the engine so it could remember an alias such as the "cnt" alias as you suggested? That would allow the statement to look as you suggested: ======== Is there any way to use values of computed select field in another For example the following fails to find "cnt" field: select The 2 workarounds I found are : A) B) insert into BAR select cnt, ======== I think that the engine enhancement to allow use of the field aliases in the select itself would be nice. And would allow not just simpler expression in this use case, but also better performance than any of the workarounds. |
Comments |
Comment by Thomas Bernhardt [ 06/Jul/07 ] |
Lowered priority and moved to 1.11 as the performance difference may not be huge since same-aggregation functions are already represented internally only once, and only if complex calculations repeat within the same statement would this feature make a bigger difference. However repeat calculations can be factored into a Java class or could be done via insert-into. |
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
A statement like the following doesn't work: the following will work, but is more complicated than necessary: select UtilFuncs.func(metric) as grp, * from Stream group by UtilFuncs.func(metric) |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
This needs to be carefully considered for two reasons: I think the engine could implement an optimization to detect duplicate expressions and condense these such that the computation occurs once and the results are shared. In such optimization the alias would still not be reusable. |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Another example query: |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
As an expression may also itself return multiple columns, the syntax would need to also support "alias.property". |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
part of expression def in 4.2 |
[ESPER-119] .NET Cannot use "params" keyword in custom method Created: 29/Jun/07 Updated: 05/Aug/10 Resolved: 05/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | 5.0 |
Fix Version/s: | 3.4 |
Type: | Improvement | Priority: | Major |
Reporter: | hank kniight | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The "params" keyword isn't handled in custom methods so you can't create custom methods whose last parameter is marked as "params". |
[ESPER-118] NullPointerException when select * and additional fields Created: 28/Jun/07 Updated: 19/Jul/07 Resolved: 04/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.10 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'm seeing a NullPointerException when doing "select *" and some select *, count as cnt from FOO Caused by: java.lang.NullPointerException |
Comments |
Comment by Thomas Bernhardt [ 28/Jun/07 ] |
The workaround to this issue is to select at least one property of event FOO in addition: The problem is caused as the system choosing the wrong processor for the result sets. |
Comment by Thomas Bernhardt [ 04/Jul/07 ] |
see test TestCountAll.testCountPlusStar |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-117] Detect looping statements and control looping behavior Created: 24/Jun/07 Updated: 31/Mar/11 Resolved: 31/Mar/11 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Also a question which might be linked, is something done to avoid infinite looping? ============ ============ As for how the engine should be configured and react...I'm not too sure, it's probably a little bit too theoretical. |
Comments |
Comment by Thomas Bernhardt [ 31/Mar/11 ] |
not applicable, in practical applications has simply not been an issue |
[ESPER-116] Include in Maven build the checkstyle, PMD, findbugs code quality tools Created: 20/Jun/07 Updated: 19/Jul/07 Resolved: 05/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.10 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Add to the automated build: analyzing with maven 2 plugins: findbugs, PMD and checkstyle. |
Comments |
Comment by Thomas Bernhardt [ 05/Jul/07 ] |
We are using "findbugs" and IntelliJ IDEA's integrated code analysis as documented in the release instructions. |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-115] NullPointerException using iterator on pattern without window Created: 19/Jun/07 Updated: 19/Jul/07 Resolved: 04/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.10 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For this, I thought of using "iterator" method (pull API) to find out if there was a match (even though esper places certain restrictions on the pull API). I tried this in esper 1.9.0. I created an EQL that would result in a pattern match when two events are sent. Then, I sent two events to esper. Then, when I called "iterator" method on the EPStatement object to check if there was a match I got "NullPointerException". Even if "sendEvent" does not result in a match I get the "NullPointerException". Please find attached the java files that contains the test code and the error log files. Could you please tell if this is a bug or is there something wrong in the way I am using the API's. package net.test; import junit.framework.TestCase; import java.util.Iterator; public class EsperTest extends TestCase { public void testIterator() throws Exception { System.out.println ("testIterator..."); EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); epService.initialize(); EPRuntime runtime = epService.getEPRuntime(); String cepStatementString = "select * from pattern " + "[every ( addressInfo = net.test.MyEventBean(name='address') " + "-> txnWD = net.test.MyEventBean(name='txn') ) ] " + "where addressInfo.intField = txnWD.intField"; EPStatement epStatement = epService.getEPAdministrator().createEQL(cepStatementString); // MyListener listener = new MyListener(); // epStatement.addListener(listener); MyEventBean myEventBean1 = new MyEventBean(); myEventBean1.setName("address"); myEventBean1.setIntField(9001); myEventBean1.setStringField("abc"); runtime.sendEvent(myEventBean1); MyEventBean myEventBean2 = new MyEventBean(); myEventBean2.setName("txn"); myEventBean2.setIntField(9001); myEventBean2.setDoubleField(50000.00); runtime.sendEvent(myEventBean2); System.out.println("Matched : " + getIsMatch(epStatement)); System.out.println("Test complete"); } public boolean getIsMatch(EPStatement epStmt) { else { System.out.println("No match found."); return false; }} public class MyListener implements UpdateListener { System.out.println("The events that caused this signature are :"); for(String eventAlias : eventAliases) { System.out.println(eventAlias); } } |
Comments |
Comment by Thomas Bernhardt [ 04/Jul/07 ] |
see test TestIterator.testPatternNoWindow |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-114] Allow equals operator on object types in expressions Created: 19/Jun/07 Updated: 19/Jul/07 Resolved: 04/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.10 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have a simple query with a condition like where myEvent1.MyField = myEvent2.MyField, where MyField is an object (either defined in the framework like an IPAddress, or user defined). |
Comments |
Comment by Thomas Bernhardt [ 19/Jun/07 ] |
that sounds like a nice improvement to enhance the equals operator to be able to use the Object equals method to compare objects of the exact same type. I think the statement compilation should remain strongly typed however and not allow to compare objects of any type. |
Comment by Thomas Bernhardt [ 04/Jul/07 ] |
see test TestFilterExpressions |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-113] New listener interface providing statement and engine instance Created: 15/Jun/07 Updated: 19/Jul/07 Resolved: 15/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.10 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
in the UpdateListener.Updated method, is there a way to know which rule was used? It could be an interesting thing to know to be able to see what happened, which rules were used, ... =========== If I understand you right, you are considering the fact that when a single UpdateListener implementation is attached to multiple statements, then how does the UpdateListener know which statement produced the result. Of course statements could select some constant value that the UpdateListener can pull out of event properties, e.g. Other then selecting a constant, there isn't currently a way unless an application uses multiple UpdateListener instances. We had discussed in this forum adding a new interface similar to UpdateListener that passes the engine instance and statement along: ================== Exactly, a single UpdateListener attached to multiple statements. Indeed as I thought I could add some sort of ID in my queries so that the listener can retrieve it. |
Comments |
Comment by Thomas Bernhardt [ 15/Jul/07 ] |
In 1.10 |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-112] Pattern problem in 'every' operator not restarting a permanently false sub-expression Created: 08/Jun/07 Updated: 19/Jul/07 Resolved: 13/Jun/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.10 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I just tried the following statement with Esper 1.9 and I get no output: select 'No StockTick within 6 seconds' as alert package test.pattern; import java.util.ArrayList; import net.esper.client.Configuration; import org.apache.commons.logging.Log; import junit.framework.TestCase; public class TestPatternMatching extends TestCase { private long startTimeMillis; private Configuration setup() { Configuration configuration = new Configuration(); Properties properties1 = new Properties(); properties1.put("stockSymbol", "string"); properties1.put("price", "double"); configuration.addEventTypeAlias(STOCK_TICK_EVENT_TYPE_ALIAS, properties1); return configuration; }private Map createStockTickEventAsMap(String symbol, double price) { Map<String, Object> evt = new HashMap<String, Object>(); evt.put("type", STOCK_TICK_EVENT_TYPE_ALIAS); evt.put("stockSymbol", symbol); evt.put("price", price); return evt; } private void logEvent (Map event) { } buf.append("} @ "); public void testEventAbsence() throws Exception { EPServiceProvider epService = EPServiceProviderManager.getProvider("testEventAbsence", configuration); EPRuntime runtime = epService.getEPRuntime(); log.info("Test complete"); class MatchListener implements UpdateListener { public void update(EventBean[] newEvents, EventBean[] oldEvents) { count++; public int getCount() { return count; }} private static final Log log = LogFactory.getLog(TestPatternMatching.class); |
Comments |
Comment by Thomas Bernhardt [ 08/Jun/07 ] |
thanks for the test code, I was able to reproduce your finding for this statement: We have test code that covers the timer:interval and 'not', in class net.esper.regression.pattern.TestFollowedByOperator in several of the test methods. The inner expression to the every operator turns permanently false as it receives the 'StockTick' event. Permanently false sub-expressions are not restarted by the 'every' operator (currently), and terminate. This behavior does not match the documentation and is incorrect. The doc link is: http://esper.codehaus.org/esper-1.9.0/doc/reference/en/html_single/index.html#pattern-logical-every The every operator should restart the subexpression whenever it comes up with a new result (true or false) and thus continue to listen for StockTick events for the next interval. I have created a JIRA defect to track this at http://jira.codehaus.org/browse/ESPER-112 If you need this function we can have a new jar file build, or alternatively can provide the corrected Java class, or include this in the next release? The workaround is to wait an interval: Or use the time window we discussed earlier: |
Comment by Thomas Bernhardt [ 13/Jun/07 ] |
The jar that fixes this problem named esper-1.9.0a has been made available at http://dist.codehaus.org/esper/ |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-111] Replay an event stream into a new statement Created: 08/Jun/07 Updated: 27/Jan/08 Resolved: 27/Jan/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In my event I just have an ID and timestamp and there is an undefined [ ID="A" ] --> Throw in new events "A" As you can see I want to group by ID, order by time of the event [ ID="A" ] [ ID="A" ] [ ID="B" ] [ ID="C" ] [ ID="D" ] --> Throw in My first try to a similar behavior was: But when I do this, it will only analyze the second from time_batch, select a.ID from pattern [ every a=Event -> timer:interval(5 sec) ] Now, that is more like it. But the first 5 seconds is total |
Comments |
Comment by Thomas Bernhardt [ 06/Jul/07 ] |
Moved to 1.11 Proposal is to introduce new syntax for statements providing data to other statements: ...and for statements consuming data from other statements: The goal is to:
|
Comment by Thomas Bernhardt [ 27/Jan/08 ] |
Named windows in release 1.12 and their consuming statements allow this |
[ESPER-110] Iterator not honoring filter, aggregation, group-by and having clause Created: 02/Jun/07 Updated: 07/Jun/07 Resolved: 03/Jun/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.9 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In 1.8 and earlier, the iterator on statements using a where-clause, group-by, aggregation, and having -clauses would not honor these and return correct results only from a viewpoint of data window and select clause. |
Comments |
Comment by Thomas Bernhardt [ 03/Jun/07 ] |
In release 1.9 |
Comment by Thomas Bernhardt [ 07/Jun/07 ] |
in release 1.9 |
[ESPER-109] NPE while fetching events from statements Created: 01/Jun/07 Updated: 07/Jun/07 Resolved: 03/Jun/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.9 |
Type: | Bug | Priority: | Major |
Reporter: | Mike Patsenker | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
jar used: 1.8a |
Number of attachments : | 0 |
Description |
Hi, I am trying to iterate over the events froim the statement and getting NPE: java.lang.NullPointerException The issue is that the result from calling net.esper.eql.core.ResultSetProcessorRowPerGroup#generateOutputEventsView is null since the count =0 : ... Then the code at net.esper.eql.view.OutputProcessViewPolicy$OutputProcessTransform.transform(OutputProcessViewPolicy.java:255) does not check it : The staement is: insert into Cutoff select provider, (String.valueOf(count) || 'x1000.0') as msg from Cost.std:groupby('provider').win:length(1) where report.cost - report.expectedCost >= 1000.0 group by provider having count = 1, where Cost is another stream. Thanks, |
Comments |
Comment by Thomas Bernhardt [ 02/Jun/07 ] |
The workaround can be to use a second statement such as "select * from Cutoff" and use that statement's iterator. The fix for this issue may make it into the 1.9 release. |
Comment by Thomas Bernhardt [ 03/Jun/07 ] |
In release 1.9 |
Comment by Thomas Bernhardt [ 07/Jun/07 ] |
in release 1.9 |
[ESPER-108] Statement management via SODA Created: 31/May/07 Updated: 15/Sep/07 Resolved: 06/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | 1.11 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This entry proposes enhancements to the administrative API, specifically statement creation, and the statement information that is returned by an engine for existing statements:
References:
|
Comments |
Comment by Thomas Bernhardt [ 14/Jul/07 ] |
moved to 1.11 |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-107] Memory leak using previous function and length window under a group Created: 30/May/07 Updated: 07/Jun/07 Resolved: 30/May/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.9 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Many thanks for your response - I have uploaded an example project http://homepage.mac.com/kussmaul/FileSharing7.html If I execute this app, the memory will slowly but steadily grow (I ============ "SELECT Small.symbol as symbol, Large.timestamp as timestamp, Small.averagePrice as price "+ ============ In technical detail, the problem is rooted in the length window view (LengthWindowView) that was not posting the remove stream to the random accessor for the 'previous' function, but was rather using the parent view's remove stream and that means it was collecting events. A workaround is to replace the length window "win:length(2)" by a length batch window "win:length_batch(2)". If that change does not give you the desired result, we can certainly provide a corrected jar file. |
Comments |
Comment by Thomas Bernhardt [ 30/May/07 ] |
workaround as described |
Comment by Alexandre Vasseur [ 30/May/07 ] |
There are some side notes left aside the primary issue described by Tom
|
Comment by Thomas Bernhardt [ 07/Jun/07 ] |
in release 1.9 |
[ESPER-106] Provide "start eager" option for output rate limiting Created: 28/May/07 Updated: 26/Oct/07 Resolved: 26/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.12 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For example, the query ...delivers output 1 second after the first event arrives and every second thereafter. A "start eager" option would deliver the first result 1 second after statement creation regardless of whether one or more events arrived. |
Comments |
Comment by Thomas Bernhardt [ 06/Jul/07 ] |
Moved to 1.11 and lowered priority as a subquery can do this: |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
Closed as a duplicate to the time_length_batch, while will also have a "start_eager" option. And also can be done via other means. |
[ESPER-105] Allow subquery to return the event object Created: 28/May/07 Updated: 07/Jun/07 Resolved: 03/Jun/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.9 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For example, the query would return the full MarketData event object in a property "md". |
Comments |
Comment by Thomas Bernhardt [ 03/Jun/07 ] |
In release 1.9 |
Comment by Thomas Bernhardt [ 07/Jun/07 ] |
in release 1.9 |
[ESPER-104] Statement configuration from XML file Created: 26/May/07 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Allow statement or statement templates/factories to live in one or more XML statement configuration files or modules. |
Comments |
Comment by Thomas Bernhardt [ 06/Jul/07 ] |
Moved to 1.11. In relationship with OSGi service designs. |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
Moved to 2.0, can easily be addressed by any application by it's own |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
Criticality lowered to minor |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
3.5 module file format is preferable |
[ESPER-103] Option for case-insensitive event property names Created: 26/May/07 Updated: 19/Jul/07 Resolved: 15/Jul/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.10 |
Fix Version/s: | 1.10 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Reasons for adding the option (default would stay case-insensitive):
============ I would vote for the default behavior be case-sensitive, and you could allow for case-insensitive through config options. Keep in mind that property lookups only occur once during the compilation of a statement after that, the method is bound and there are no further lookups. As such, the cost is only incurred once per statement compilation. I vote to keep case sensitive if it yields better performance, saving a string.toUpperCase(). > The Esper team is considering to have event property names become case-insensitive (currently they are case-sensitive). That is, when Esper compiles a statement it can attempt to match property names to Java bean methods ignoring case, and would consider case only if a property name is not unique by name when ignoring case. |
Comments |
Comment by Thomas Bernhardt [ 15/Jul/07 ] |
In 1.10 |
Comment by Thomas Bernhardt [ 19/Jul/07 ] |
in 1.10 |
[ESPER-102] Time batch and row batch in full aggregation case with a having-clause not producing correct results Created: 25/May/07 Updated: 27/May/07 Resolved: 27/May/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.9 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The problem manifests itself in a statement that has all of: 1) has a having clause 2) full aggregation without group by 3) row batch or time batch window Example: select sum(longBoxed) as mySum In such a statement if during a batch the following events arrive: {110}, {-100}then the having-clause does not fire as soon as the {110} event is encountered. Rather, in version 1.8 the having-clause is only checked at the beginning and end of a batch and thus does not produce an event. |
Comments |
Comment by Thomas Bernhardt [ 27/May/07 ] |
This is the correct behavior as we are looking at the sum of a batch of events not individual events |
[ESPER-101] ArrayIndexOutOfBounds with 'output last' and group by Created: 22/May/07 Updated: 07/Jun/07 Resolved: 27/May/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.9 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I've been trying to use "output last" together with "group by" which java.lang.ArrayIndexOutOfBoundsException: 0 The statement that generated this was: ------- I think that happens when the result window has nothing to output? I |
Comments |
Comment by Thomas Bernhardt [ 22/May/07 ] |
I have been able to reproduce this problem and concur that it occurs when there are no events in a data window, in a group-by statement where the results are fully grouped. We are tracking the problem through JIRA issue http://jira.codehaus.org/browse/ESPER-101 As a workaround, consider leaving the "output every" clause off entirely. This would works as the time batch window only indicates new data after every interval: |
Comment by Thomas Bernhardt [ 27/May/07 ] |
in release 1.9 |
Comment by Thomas Bernhardt [ 07/Jun/07 ] |
in release 1.9 |
[ESPER-100] log.debug is not optimized Created: 18/May/07 Updated: 07/Jun/07 Resolved: 27/May/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.9 |
Type: | Improvement | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
log.debug is not optimized, causing uneeded object expansion and nursery memory waste f.e. should be written // Build index specifications this will delegate to log4j Logger (f.e.) and ends up in Category up to There could be options to also avoid doing inextensive yet numerous debug checks by using some tricks relying on a constant so that the JIT can immediately throw it out of the code path but lets leave that aside for now Also another option for build time optimization |
Comments |
Comment by Thomas Bernhardt [ 27/May/07 ] |
changed in 1.9 |
Comment by Thomas Bernhardt [ 07/Jun/07 ] |
in release 1.9 |
[ESPER-99] IllegalStateException combining a time window with min/max and group-by and output every Created: 17/May/07 Updated: 07/Jun/07 Resolved: 27/May/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.9 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I seem to have hit a possible bug in 1.8.0 with max/min functions over select name, i, max as maxI Generates the following exception: Exception in thread "Timer-0" java.lang.IllegalStateException: Same problem with "time_batch" window. To add to this, I think other aggregate functions may also have a |
Comments |
Comment by Thomas Bernhardt [ 19/May/07 ] |
We are planning to have this correction in the next release due on June 2. This is a problem using max/min together with output rate limiting that can be worked around by using an "insert-into" statement to move the output rate limit into a further statement, as below. insert into StreamMax select * from StreamMax output every 1 seconds |
Comment by Thomas Bernhardt [ 19/May/07 ] |
You had also found that the sum aggregation value appears to be incorrect when using a time window and using output rate limiting, for the very first time window. The sample statement is the following: select name, i, sum as sumI |
Comment by Thomas Bernhardt [ 27/May/07 ] |
in release 1.9 |
Comment by Thomas Bernhardt [ 07/Jun/07 ] |
in release 1.9 |
[ESPER-98] NullPointerException for Joins involving Map event types Created: 07/May/07 Updated: 07/Jun/07 Due: 08/May/07 Resolved: 08/May/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.8 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Sorry, if this might be a newbie question, but I'm having problems Exception in thread "main" java.lang.NullPointerException E.g. if I use the following EQL: In general I always get this Exception if I try to use two different |
Comments |
Comment by Thomas Bernhardt [ 08/May/07 ] |
Provided esper-1.8.0a.jar release, at http://dist.codehaus.org/esper/esper-1.8.0a.jar The problem was indeed related to Map event types that don't have supertypes and the self-join check didn't take the null collection into account. |
Comment by Thomas Bernhardt [ 07/Jun/07 ] |
in release 1.9 |
[ESPER-97] Building Esper Created: 02/May/07 Updated: 02/May/07 Resolved: 02/May/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Build |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.8 |
Type: | Task | Priority: | Major |
Reporter: | Silviano Diaz | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
Dell Optiplex 745 Microsoft Windows XP Professional Version 2002 Service Pack 2 |
Number of attachments : | 0 |
Description |
I tried to build esper 1.8.0 following the instructions of the Building Section but there are test failures and they don't allow me to build esper. My computer is a Dell Optiplex 745 with Microsoft Windows XP Professional Version 2002 Service Pack 2, I use jdk1.6.0_01, jre1.6.0_01 an Maven 2.0.4. I also tried to build NEsper and some components don't be installed. Can anybody help me with this problem?? These are the results of the command C:\esper\esper mvn install -e Last packet sent to the server was 0 ms ago. SQLState: 08S01 VendorError: 0
java.net.SocketException STACKTRACE: java.net.SocketException: java.net.ConnectException: Connection refused: connect at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.ja
Last packet sent to the server was 0 ms ago. Results : Failed tests: Tests in error: Tests run: 1416, Failures: 8, Errors: 29, Skipped: 0 [INFO] ------------------------------------------------------------------------ at org.codehaus.classworlds.Launcher.main(Launcher.java:375) Thanks for your help I'll look forward for your reply Silviano Diaz |
Comments |
Comment by Alexandre Vasseur [ 02/May/07 ] |
I believe Esper test suite has fired, and thus stream to database joins tests are started. This requires a running MySQL DB that is may be not described in our build instructions. You can start using Esper with the binary jar, there is no need to build your own kit at all unless you 're goal is to contribute - which would be very welcome of course. |
Comment by Thomas Bernhardt [ 02/May/07 ] |
Added a Note on the "Building" Esper page to outline the required MySql installation and system requirements to run tests |
Comment by Thomas Bernhardt [ 02/May/07 ] |
Also, NEsper Building page already has a list of required installed software |
[ESPER-96] Cache result of user-defined functions when parameter set is constants Created: 12/Apr/07 Updated: 07/May/07 Resolved: 18/Apr/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.8 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
In an example, a statement "select MyLib.myfunc("abc")" could cache the result of the evaluation of the "myfunc" function such that subsequent expression evaluations use the same result |
Comments |
Comment by Thomas Bernhardt [ 07/May/07 ] |
in release 1.8 |
[ESPER-95] CLONE -Create Quick Reference document page Created: 08/Apr/07 Updated: 06/Sep/07 Resolved: 06/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Major |
Reporter: | hiroaki yamane | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 09/Apr/07 ] |
Please clarify why this JIRA issue was cloned, is it because you are supporting the issue and wish for the quick reference doc as well? |
[ESPER-94] Performance degradation for statement between 1.4 and 1.5 of 25% Created: 22/Mar/07 Updated: 07/May/07 Resolved: 18/Apr/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.8 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The statement affected is... select name ').win:time($ {secondsWindowSpan}) |
Comments |
Comment by Thomas Bernhardt [ 07/May/07 ] |
in release 1.8 |
[ESPER-93] Improve error handling parsing too large Integer numbers and remove L suffix requirement for Long Created: 21/Mar/07 Updated: 07/May/07 Resolved: 18/Apr/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.8 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
select totalTime from T where crc = 2512570244L and totalTime > 3 The statement above requires the L to denote the long just as Java would require. The exception text without L is not friendly, but should the engine simply append L when a large number is encountered and parse as long? |
Comments |
Comment by Thomas Bernhardt [ 18/Apr/07 ] |
Engine now parses as Long type |
Comment by Thomas Bernhardt [ 07/May/07 ] |
in release 1.8 |
[ESPER-92] String with parantheses not parsing in static method arg Created: 13/Mar/07 Updated: 20/Mar/07 Resolved: 13/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.6 |
Fix Version/s: | 1.7 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
select * from Temperature as temp where MyLib.myFunc("A ((100,100))") |
Comments |
Comment by Thomas Bernhardt [ 13/Mar/07 ] |
We have found a problem in the static method resolution that determines if the syntax "a.b('arg')" is a mapped property or a static method. |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-91] Comparison of event properties in filter criteria causes syntax exception Created: 12/Mar/07 Updated: 20/Mar/07 Resolved: 12/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.6 |
Fix Version/s: | 1.7 |
Type: | Bug | Priority: | Major |
Reporter: | James | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I receive an exception when I compare two event properties on the rhs and lhs of a filter criteria. For example, assume I have a StockTick event with symbol, bid, and ask properties and run the following query: select symbol, ask, bid from StockTick(ask > bid).win:length(2) In this case, I receive the exception below: net.esper.eql.parse.EPStatementSyntaxException: expecting DOT, found ')' near line 1, column 39 [select symbol from StockTick(ask > bid).win:length(2)] |
Comments |
Comment by Thomas Bernhardt [ 12/Mar/07 ] |
This is a restriction in esper 1.6, the filter criteria didn't support self-compares. Release 1.7 scheduled for release in about 1 week addresses this issue through allowing filter criteria to contain any expression, also see http://jira.codehaus.org/browse/ESPER-77 |
Comment by James [ 12/Mar/07 ] |
That's good news! So any expression will be possible in a filter criteria and this replaces the comma separated list? For example, I'd be able to do the following types of query: select symbol, ask, bid from StockTick(ask > bid or (symbol='GOOG' and ask > 500.0)).win:length(2) |
Comment by Thomas Bernhardt [ 12/Mar/07 ] |
Yes, truely any expression one can do in a select, where or having (etc) -clause, except the aggregation functions and previous and prior functions. |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-90] Statement management API Created: 11/Mar/07 Updated: 20/Mar/07 Resolved: 11/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.7 |
Fix Version/s: | 1.7 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
These all sound like very good additions. I have not yet needed to get the engine instance from an update listener, but can imagine needing this down the road. ----- Original Message ---- This is to the wider user and dev team community to discuss enhancements to the public API. Please feedback -thanks We want to add the capability in the API for
The couple of new client API methods we are thinking of are: interface EPStatement enum EPStatementStateEnum interface EPAdministrator interface EPServiceProvider (new) interface ProviderUpdateListener
|
Comments |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-89] Allow literal keywords to be case insensitive Created: 06/Mar/07 Updated: 20/Mar/07 Resolved: 11/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.6 |
Fix Version/s: | 1.7 |
Type: | Improvement | Priority: | Minor |
Reporter: | James | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
It would be nice if literal keywords such as select, where, from, etc. could be matched in a case insensitive way since this is more similar to the way SQL is parsed. I believe that this would just require that the caseSensitiveLiterals option be set to false in the Lexer. |
Comments |
Comment by Thomas Bernhardt [ 11/Mar/07 ] |
That makes sense. |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-88] Constrain pattern by fact that joined to streams Created: 02/Mar/07 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.3 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
One more item that's language related rather than API related. The view specification already defines a very nice way of declaring a time or row based limit to the window size. It would be great if the pattern could use this information to constrain how many events are kept to match a pattern. Here's an example of how this might be done by allowing the pattern to reference an alias of a stream source whose size has already been constrained: select * from EventA.win:length(5) A, EventB.win:length(5) B, pattern[every A -> every B] |
Comments |
Comment by Thomas Bernhardt [ 04/Mar/07 ] |
I think the syntax you suggested for constraining a pattern/window results could be improved...the original syntax was: The suggested syntax is a regular join syntax that, by following a naming convention, changes meaning to become a constraint. I think that can be confusing. Regular joins produce products of the joined streams, relating the streams by means of a where-clause. However in this syntax the pattern builds the relation between streams, yet the pattern appears in the from-clause. The from-clause can list multiple patterns, therefore by adding anther pattern such as "every B -> A" would that further constrain the join results or would there be an or-condition between constrains? I'd like suggest a "matching" clause that acts comparable to a where-clause in that it defines the result-constraining pattern: select * from EventA.win:length(5) A, EventB.win:length(5) B This also makes it pretty clear that any event type aliases used in the pattern (A and B) must relate to stream names in the from clause. |
Comment by James [ 06/Mar/07 ] |
Your idea is excellent. Having a matching clause is much more clear. Along the same lines, would this potentially eliminate the need for variable assignments inside of a matching clause, since the alias name could be used to reference previous bindings? For example: select * from EventA.win:length(5) A, EventB.win:length(5) B instead of select * from EventA.win:length(5) A, EventB.win:length(5) B Also, could the use of timer:within be replaced by referencing a window that uses win:time? For example select * from EventA.win:time(1 min) A, EventB.win:length(5) B instead of select * from EventA.win:length(5) A, EventB.win:length(5) B One final idea that I haven't thought through completely, but would like to get some feedback on. Would it be possible to make the pattern syntax more similar with the syntax of expressions in other clauses? For example: select * from StockTickEvent instead of select * from StockTickEvent or instead of select * from StockTickEvent (symbol = 'IBM', price > 100) |
Comment by Thomas Bernhardt [ 07/Mar/07 ] |
In discussing the use of the event alias as a prefix to property names in patterns, the event alias can occur multiple times in the same pattern, i.e. "(A or A) -> B" (simplified). The property "A.val" is then ambiguous. The same in a select clause which cannot read "select A.val from A" but reads "select a.val from A as a", since the from-clause can also list the same event alias multiple times. The engine could default in all these cases, yet that may be confusing, I think. In discussing the "timer:within" in the pattern the statements were: In discussing the final idea to remove the pattern keywords and imply an event type, I think for most of the patterns that wouldn't work since a pattern is usually used to match 2 or more events having some sort of relationship with each other. Also note the "pattern" keyword leaves room for future enhancements such as replacement with the "sql" keyword if one wants to constrain a result set of a join in other ways then a pattern. |
Comment by Alexandre Vasseur [ 07/Mar/07 ] |
(discussing the original idea here only and not all James suggestion as Tom addressed those) we could also inline the views in the pattern : select * from pattern [ every EventA.win:length(5) -> every EventB.win:length(5) ] that said this opens for too long syntax, and will also lead to combination of pattern filter and view spec I think Tom use of matching keyword is good. |
Comment by James [ 15/May/07 ] |
How would you approach the implementation of this? |
Comment by Thomas Bernhardt [ 06/Jul/07 ] |
Moved to 1.11 |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
Has simply not found a use case for this yet, that patterns could not solved. Moved to 2.0 for re-priorization |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Match-recognize is already constrained by the declare data window(s) |
[ESPER-87] Add new class alias, Map or DOM event type to an engine dynamically Created: 02/Mar/07 Updated: 20/Mar/07 Resolved: 15/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.7 |
Fix Version/s: | 1.7 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Allow applications to add types to an existing engine instance (EPServiceProvider is currently immutable). The ability to add new rules dynamically is a nice feature, but is considerably constrained by the fact that new types cannot be added and referenced. The ability to update and delete types as well would be a "nice-to-have", but not essential. |
Comments |
Comment by Thomas Bernhardt [ 04/Mar/07 ] |
One needs to point out that types can already be added to an existing engine instance: statements can simply refer to the Java class name and the engine picks up the new type automatically. In order to add Map types, DOM and legacy types to an existing engine instance, we may provide an additional method on EPAdministrator that returns an implementation of a new ConfigurationOperations interface, such as: interface EPAdminstrator: interface ConfigurationOperations: The existing Configuration class then changes and implements the new ConfigurationOperations interface. |
Comment by James [ 06/Mar/07 ] |
Good point about Java class references being picked up automatically. I believe it would still be necessary to be able to add type aliases for Java classes dynamically. Something like the following added to the ConfigurationOperations interface: public void addEventTypeAlias (String eventTypeAlias, String javaClassName); |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-86] selecting first element via prev and count(*) Created: 22/Feb/07 Updated: 20/Mar/07 Resolved: 24/Feb/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.6 |
Fix Version/s: | 1.7 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Thought I'd run a scenario by you. When using a time based view such as a sliding window (win:time) I'd like to reference the first element (or event) within that view from my select clause. There doesn't appear to be a way to do this within EQL that I can tell. Obviously, since it's a temporal window I don't know the total number of events currently in it so I'd reference it by using count. For example, something like this would be ideal: select count as total, timestamp as lastTimestamp, ).win:time(60 sec) However, since prior doesn't take any expressions this doesn't work. If one tries to use the alternative 'prev' function you get the following exception: java.lang.ClassCastException: java.lang.Long |
Comments |
Comment by Thomas Bernhardt [ 22/Feb/07 ] |
There is a workaround to convert the Long value returned by the count into integer. (1) Define a function as follows: public class MyClass else { return longValue.intValue(); } } (2) Use the function to convert the count as follows: |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-85] This is a test issue -- please deprecate it immediately Created: 15/Feb/07 Updated: 02/Mar/07 Resolved: 02/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | NEsper |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Test | Priority: | Trivial |
Reporter: | Aaron Jackson | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
.NET v2.0 - Microsoft Implementation Framework |
Number of attachments : | 0 |
Description |
Sample test to validate that I can enter a test |
[ESPER-84] Timer:at to have last day of month function Created: 14/Feb/07 Updated: 07/Jun/07 Resolved: 27/May/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.9 |
Fix Version/s: | 1.9 |
Type: | Improvement | Priority: | Minor |
Reporter: | alex mcbeth | Assignee: | Yves Greatti |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Would it be possible to implement the following features in the timer:at statement :- Last day of month The quartz scheduler has L, 1W and LW to represent the above functions. It would be nice it this were available within esper. Thanks. |
Comments |
Comment by Yves Greatti [ 14/Mar/07 ] |
I am proposing to add special characters L, W as suggested by user. |
Comment by Thomas Bernhardt [ 27/May/07 ] |
in release 1.9 |
Comment by Thomas Bernhardt [ 07/Jun/07 ] |
in release 1.9 |
[ESPER-83] Modify queries on the fly Created: 10/Feb/07 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 3.0 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
being able to replace queries and simply keep the existing query state when replaced with a new query freely would be rather nice. |
Comments |
Comment by Thomas Bernhardt [ 27/Jan/08 ] |
Note that named windows provide a subset of this feature, as a new statement can be initialized from a named window simply by referring to the named window |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
[ESPER-82] More helpful error messages when invalid syntax Created: 10/Feb/07 Updated: 20/Mar/07 Resolved: 04/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.7 |
Fix Version/s: | 1.7 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
more helpful error messages when it comes to registering a query with invalid syntax (user feedback) |
Comments |
Comment by Thomas Bernhardt [ 04/Mar/07 ] |
Use via ANTLR paraphrases and handling of EOF errors. With ANTLR 3 the no-viable-alternative error handling can further be improved. |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-81] Create Quick Reference document page Created: 06/Feb/07 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 2.3 |
Fix Version/s: | 5.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Removed from roadmap |
[ESPER-80] Prev function to consider grouped windows Created: 02/Feb/07 Updated: 22/Feb/07 Resolved: 05/Feb/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.6 |
Fix Version/s: | 1.6 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I don't see a simple EQL-only solution to this problem. I think the "prev" function could be useful. A little piece of listener code that resets the current count seems the easiest solution. insert into AddStream The listener to a statement such as above could simply keep a counter and add 1 or reset the counter to 0. I have noticed that the "prev" function has a limitation that in a grouped-window view it doesn't allow to look for the current group window: ----- Original Message ---- Hello, I have a StockTick event stream with attributes price and symbol. I'd like to be able to detect how many continuous up-ticks occur (i.e. the count of events that occur for the same symbol where the price increases relative to the previous event). For example, if I process the following events: symbol price I'd get back 4 for GOOG, since there is a series of prices 478.0, 490.0, 495.0, and 501.0 that are all increasing in value. Is it possible to write such a query in Esper? Thanks! James |
Comments |
Comment by Thomas Bernhardt [ 05/Feb/07 ] |
For 1.6 release |
Comment by Thomas Bernhardt [ 22/Feb/07 ] |
in release 1.6 |
[ESPER-79] Natural SQL with embedded EQL Created: 28/Jan/07 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 5.0 |
Type: | Wish | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
3) For the embedding of SQL database statements, I have a design-related question. Did you consider being able to combine SQL statements with EQL statements in the same statement rather than embedding them more as subqueries? For example, did you consider allowing the following: select custId, cust_name instead of this: select custId, cust_name from CustomerCallEvent, '] Or are there too many semantic differences between SQL and EQL? Or is it more a matter of the additional effort that would be necessary to implement all of the required SQL functionality in EQL? |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Removed from roadmap |
[ESPER-78] Insert-into streams not using correct event type when same-typed streams Created: 21/Jan/07 Updated: 22/Feb/07 Resolved: 21/Jan/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | 1.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I wrote three statments: The InZone and OutZone streams specify the exact same field names and types in the insert-into statements. That causes the generated event types for these streams to be equal and filter conditions for such event type match both streams. |
Comments |
Comment by Thomas Bernhardt [ 21/Jan/07 ] |
Fixed issue in esper-1.5.0a Event type for insert-into now carries the name and equality includes name. Test in regression.eql.TestInsertInto |
Comment by Thomas Bernhardt [ 22/Feb/07 ] |
in release 1.6 |
[ESPER-77] User-defined filter functions Created: 19/Jan/07 Updated: 20/Mar/07 Resolved: 10/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.7 |
Fix Version/s: | 1.7 |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
You have raised the idea of a user-defined filter function, such as below: |
Comments |
Comment by Thomas Bernhardt [ 30/Jan/07 ] |
Set to lower priority as the user-defined function can be called in an EQL expression in an insert-into, for example: |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-76] Java array initialization syntax for constants Created: 17/Jan/07 Updated: 22/Feb/07 Due: 20/Feb/07 Resolved: 31/Jan/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.6 |
Fix Version/s: | 1.6 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have an Object which include a Set<Long> of Ids. I would like to be able to check if the intersection between the Ids and a certain lint of longs isn't empty. For example, I would like to be able writing: select .... The MyFunctions.checkInterse is a user defined Is it possible? ======================= It would be nice to support the {} syntax for array initialization in Java, such as )) |
Comments |
Comment by Thomas Bernhardt [ 17/Jan/07 ] |
We don't currently have support for array or Set-typed constants using the array-initialization syntax in Java outside of view parameters (we have it for views). A workaround would be to create a method that returns the Set you are looking for, such as: Alternatively, we could add array initialization support, using the curly brackets {} syntax. The syntax could be as below, with "checkIntersect" being passed an array of int or a Set depending on what the method takes: ) |
[ESPER-75] PropertyAccessException selecting individual fields from a group-by with sub-ordinate length window Created: 10/Jan/07 Updated: 11/Jan/07 Resolved: 10/Jan/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.4 |
Fix Version/s: | 1.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Hi While doing some experimentation with Esper I have run into this select * from ticks.std:groupby('sym').win:length(2) While this statement: select sym,price from ticks.std:groupby('sym').win:length(2) casts an exception as soon as it is run. This appears to be The exception is as follows: /******************************************************** It seems to me that the internals is attempting to fetch the Is this some configuration error on my part or is it an actual |
Comments |
Comment by Thomas Bernhardt [ 10/Jan/07 ] |
the issue was that there is a complexity in the way the Group-by view works together with the views it needs to merge the group-key back into results. For example, the statement "std:groupby('sym').win:length(2)" has 2 view specification objects coming from the parser representing the 2 views. Then when the ViewFactoryFactory comes along, it translates the groupby into a GroupByViewFactory object and the window into a LengthWindowViewFactory and for each group-by also adds a MergeViewFactory. The view factories are then asked to realize/instantiate the actual views. The group-by view when it receives a new group key, i.e. a sym value it hasn't seen before, will dynamically clone a new chain of child views until it encounters a matching MergeView. That merge view factory has the responsibility to create a MergeView instance that works together with the GroupByView and also the dynamically created AddPropertyValueView to merge back the group-by key into the final result. |
Comment by Thomas Bernhardt [ 11/Jan/07 ] |
Bug fix in 1.5 release |
[ESPER-74] Port Esper to C# Created: 06/Jan/07 Updated: 11/Mar/07 Resolved: 02/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 1.7 |
Type: | Wish | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Attachments: | NEsper.zip |
Number of attachments : | 1 |
Description |
a place to contribute the initial port of Esper to C# based on Esper release 1.x |
Comments |
Comment by Aaron Jackson [ 08/Feb/07 ] |
Official submission of the initial 1.3 esper port to .NET |
Comment by Thomas Bernhardt [ 02/Mar/07 ] |
Internal beta |
Comment by chris donnan [ 06/Mar/07 ] |
is this supposed to actually build - or not quite? |
Comment by Thomas Bernhardt [ 06/Mar/07 ] |
The attached zip represents an initial contribution and is not supposed to build and run, as it is a representation of the NEsper contribution at the time of Feb. 8 We are working on an internal beta and are planning to make a release candidate version available soon. The current codebase is in Subversion under "trunknet". We also have a mailing list for NEsper, see http://xircles.codehaus.org/projects/esper/lists |
[ESPER-73] some interesting use case when mixing static method invocation with output stmt - work as design or not Created: 21/Dec/06 Updated: 11/Jan/07 Resolved: 11/Jan/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | None |
Fix Version/s: | 1.4 |
Type: | Bug | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
select avg(Math.random()) as random from NullEvent output last every 500 events one may argue this should converge toward 0.5 If it is work as design, we'd better warn users properly in the doc about this behavior |
Comments |
Comment by Thomas Bernhardt [ 21/Dec/06 ] |
Events are expected to provide immutable event properties, that is in the doc....thus the event itself provide the memory of the value to be removed. It would still be good to point that out in the doc. |
[ESPER-72] use of Vector Created: 21/Dec/06 Updated: 26/Dec/06 Resolved: 21/Dec/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Performance |
Affects Version/s: | None |
Fix Version/s: | 1.4 |
Type: | Improvement | Priority: | Trivial |
Reporter: | Alexandre Vasseur | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A bunch of core classes are using Vector. What is the rationale ? Vector is syncrhonized. Targets |
Comments |
Comment by Thomas Bernhardt [ 21/Dec/06 ] |
excellent suggestion, changes made to trunk for 1.4 release |
Comment by Thomas Bernhardt [ 26/Dec/06 ] |
Changes in 1.4.0 release |
[ESPER-71] EQL Statement containing a having clause equal to a value fires twice. Created: 13/Dec/06 Updated: 11/Jan/07 Resolved: 10/Jan/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.3 |
Fix Version/s: | 1.5 |
Type: | Bug | Priority: | Minor |
Reporter: | alex mcbeth | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I have the following EQL statement which should trigger only once when the EPStatement singleTrigger = admin.createEQL( I then send the event 3 times. // send event 1 // send event 2 // send event 3 // send event 4 Now I would've expected the singleTrigger to have fired after event 2 only. What happens is that the listener is called twice - once after event 2 and once after event 3. Is this expected behaviour? Also - is this the best way to set up a "fire once" event? |
Comments |
Comment by Thomas Bernhardt [ 16/Dec/06 ] |
Thanks for submitting this, sorry for any delay, we are looking at this now |
Comment by Thomas Bernhardt [ 16/Dec/06 ] |
Hi Alex, select istream sum(myEvent.value) from pattern [every myEvent=MyEvent] having sum(myEvent.value) = 2 |
Comment by Thomas Bernhardt [ 10/Jan/07 ] |
in documentation for 1.5 release |
Comment by Thomas Bernhardt [ 11/Jan/07 ] |
In release 1.5 - now doc chapter on output model - aggregation posts remove stream |
[ESPER-70] test of notifications Created: 01/Dec/06 Updated: 04/Dec/06 Resolved: 04/Dec/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Trivial |
Reporter: | Ben Walding | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
[ESPER-69] Pull throws UnsupportedOperationException for statement not selecting wildcard Created: 30/Nov/06 Updated: 26/Dec/06 Resolved: 17/Dec/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.3 |
Fix Version/s: | 1.5 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Trying to use the pull model to get the EQL result set of a single event stream. else { return parent.iterator(); }} |
Comments |
Comment by Thomas Bernhardt [ 17/Dec/06 ] |
fixed for 1.4 |
Comment by Thomas Bernhardt [ 26/Dec/06 ] |
Changes in 1.4.0 release |
[ESPER-68] Followed-by operator not releasing memory for dead sub-expressions Created: 27/Nov/06 Updated: 27/Nov/06 Resolved: 27/Nov/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The problematic statement uses a pattern. ---------------------------- The jar file with the correction is esper-1.3.0a.jar, for download in http://dist.codehaus.org/esper/ |
Comments |
Comment by Thomas Bernhardt [ 27/Nov/06 ] |
Fixed in 1.3.0a |
[ESPER-67] Modifying events in a stream Created: 13/Nov/06 Updated: 26/Dec/06 Resolved: 23/Dec/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | None |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | srdan bejakovic |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Would it be possible to modify one or more event properties, while keeping all the other poperties in the resulting stream? insert into ModifiedEvents select text||text as newtext from MyStream.win:time(10 sec) but then, we will only find the single "newtext" property in resulting events. My current need would be more something like: insert into ModifiedEvents select *, text||text as newtext from MyStream.win:time(10 sec) using the * wildcard in the select (in addition to another modifying expression) which is apparently not allowed. Of course, we can manually enumerate the complete properties "select prop1, prop2, MyChange(prop3) as prop3, etc... from MyStream", but this would be rather painful compared to the wildcard usage. |
Comments |
Comment by Thomas Bernhardt [ 28/Nov/06 ] |
Requested.... It would be nice to allow '*' wildcard in the insert into syntax, like Right now it is not allowed and have to specify the event properties |
Comment by Thomas Bernhardt [ 26/Dec/06 ] |
Changes in 1.4.0 release |
[ESPER-66] Support for 'in' in filter expressions Created: 09/Nov/06 Updated: 26/Dec/06 Resolved: 19/Dec/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Is it possible to write "in" inside patters? ============= Since attributes on filters may only be referenced only once, it doesn't look like I could say "grade 1 or grade 2 or grade 7...", only grades 1 through 2. (Short of writing something like this for each number in the set: mypackage.RfidEvent(category="Perishable", price<1.00, grade=1) or mypackage.RfidEvent(category="Perishable", price<1.00, grade=2)). ============ Since "in" is used in EQL and it follows the same behavior as SQL, I'd guess most people would end up making the same incorrect assumption as I did. So renaming it to "between" would probably reduce support questions in the future ...although it'd break backwards compatibility for anyone out there using it today. This would be a really nice addition because it'd greatly reduce the number of nearly duplicated EQL expressions people would have to end up writing to work around it. I love the embedded filter support directly in the EQL since it simplifies most of my statements. Awesome feature! |
Comments |
Comment by Thomas Bernhardt [ 19/Dec/06 ] |
going to be in 1.4 |
Comment by Thomas Bernhardt [ 19/Dec/06 ] |
test comment |
Comment by Thomas Bernhardt [ 26/Dec/06 ] |
Changes in 1.4.0 release |
[ESPER-65] Regular expression support and SQL-Like operator Created: 28/Oct/06 Updated: 14/Nov/06 Resolved: 30/Oct/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
regular expressions in EQL clauses Could work like REGEXP and NOT REGEXP functions in MySQLDB (or RLIKE and NOT RLIKE) See |
Comments |
Comment by Thomas Bernhardt [ 30/Oct/06 ] |
Added 'like', 'not like', 'regexp' and 'not regexp' |
Comment by Thomas Bernhardt [ 14/Nov/06 ] |
in release 1.3 |
[ESPER-64] Example for running in J2EE container Created: 21/Sep/06 Updated: 26/Oct/06 Resolved: 04/Oct/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Examples |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
>If you have specific requirements on this chapter or wish >some samples please let us know. >Esper is light-weight in terms of threads: each engine >Esper engine instances are not clusterable. That is, engine >If you are running inside an EJB container, using stateless |
Comments |
Comment by Thomas Bernhardt [ 04/Oct/06 ] |
New terminal service case study added |
[ESPER-63] Ability to use != (not equals) in filter expressions Created: 18/Sep/06 Updated: 26/Oct/06 Resolved: 20/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
[[ user request ]] Is there a way to create a pattern which contains a "Not Equals" operator [[ Esper team reply ]] >the filter operators are currently limited to the set of operators [[ user reply ]] |
Comments |
Comment by Thomas Bernhardt [ 20/Sep/06 ] |
Assigned to 1.0 release |
Comment by Thomas Bernhardt [ 20/Sep/06 ] |
Will be available in next release |
Comment by Thomas Bernhardt [ 26/Oct/06 ] |
in 1.2 release |
[ESPER-62] How does one use the EmitService Created: 15/Sep/06 Updated: 26/Oct/06 Resolved: 09/Oct/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Noah Campbell | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
I'm interested in how the EmitService works but can't find any comprehensive documentation. Will it provide the ability to create filtered streams of events? |
Comments |
Comment by Thomas Bernhardt [ 18/Sep/06 ] |
Assigned to 1.0 reasoning that it's not in the docs but should be |
Comment by Thomas Bernhardt [ 09/Oct/06 ] |
Extended existing comment in API section to better elaborate on what this accompishes. |
Comment by Thomas Bernhardt [ 26/Oct/06 ] |
in 1.2 release |
[ESPER-61] Having clause not applied in query without group-by and without aggregation functions Created: 14/Sep/06 Updated: 20/Sep/06 Resolved: 15/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
[[ Request ]] select a.price as aPrice, b.price as bPrice, Math.max(a.price, b.price) - Math.min(a.price, b.price) as spread The having cluasing is basically ignored. [[ reply ]] Workaround: In the meantime, you can use the "where" clause instead of "having" in the exact same query as above. I have tested this and had good results. |
Comments |
Comment by Thomas Bernhardt [ 15/Sep/06 ] |
Resolved by having the appropriate result set processor apply the having clause, if present |
[ESPER-60] Not all memory cleared for 30 second window with aggregation query Created: 11/Sep/06 Updated: 20/Sep/06 Resolved: 13/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
[[ start ]] The query and permutations of it are quite simple and look like: select price, min(price) as minPrice I haven't had time to comb the inner workings of Esper, but I'd figured that it would drop stream data when it no longer had an interest in it. As in this query example, it has no need to preserve data beyond 30 seconds. But after seeing this behavior I'd assume Esper is holding in memory all Event data. Is that right? [[ Reply ]] Your statement declares a 30 second window thus Esper won't keep any references to events older then 30 seconds. Esper does keep all events arriving within 30 seconds since it needs these events for processing the "rstream" when these events leave the window. Once an event leaves the window after 30 seconds the Esper engine won't hold any references to it, and derived collections also remove references. With a 30 second time window and a load of 5000 msg/sec the single statement below would require memory for 30 * 5000 = 150k messages. Are the messages fairly large? Would you be able to share the test code? [[ Reply ]] And in answer to your question as to if the messages are large, they are nothing more than a JavaBean with a small String, int, double and float. BTW - I must apologize for the huge dual screen screen shot. I thought I could crop it in Paint but I guess I was wrong. Still looking at JConsole on my desktop 15 minutes later and it's still showing 400MB of memory consumed with the application doing nothing. Anyway, I hope this information is helpful. Sorry I'm not rolling up my sleeves and getting into the code yet. Maybe in a bit I will. |
Comments |
Comment by Thomas Bernhardt [ 12/Sep/06 ] |
I have looked into the apparent memory leak problem but have not been able to reproduce or see anything lingering in caches in my tests. I have put the result and test classes up at http://docs.codehaus.org/display/ESPER/Profiling+Test+Results My tests ran fine for 30 minutes with the query. I was testing higher volumes (100k per window) via external timer events, and also the tested 5k msg/second with system time. |
Comment by Thomas Bernhardt [ 13/Sep/06 ] |
Related to Esper-59 http://jira.codehaus.org/browse/ESPER-59 Also see memory consumption page on Confluence. [[ comments from users ]] |
[ESPER-59] Internal Threading Bugs Found Created: 07/Sep/06 Updated: 20/Sep/06 Resolved: 09/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.5 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Nathan Phillips | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Doing some load testing I ran into what appears to be a threading bug. The version of Esper is 1.5, JVM 1.5x, Windows XP, JVM Heap 1MB. The test was set up as follows: 1 engine private void fireEvent(Object o) { finally { engineLock.unlock(); }} The following two related errors occurred multiple times in testing:
Exception in thread "Timer-1" net.esper.client.EPException: java.lang.ArrayIndex at net.esper.core.EPRuntimeImpl.processBeanEvent(EPRuntimeImpl.java:172) at net.esper.core.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:55) at net.esper.dispatch.DispatchServiceImpl.dispatchFromQueue(DispatchServ
Exception in thread "Timer-1" net.esper.client.EPException: java.lang.ArrayIndex at net.esper.core.EPRuntimeImpl.processBeanEvent(EPRuntimeImpl.java:172) at net.esper.core.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:55) at java.util.Vector.get(Vector.java:710) at net.esper.dispatch.DispatchServiceImpl.dispatchFromQueue(DispatchServ Please feel free to contact me for any more details. |
Comments |
Comment by Nathan Phillips [ 07/Sep/06 ] |
Update: JVM was 1GB not 1MB. |
Comment by Thomas Bernhardt [ 09/Sep/06 ] |
Fixed, affected EPRuntimeImpl |
Comment by Thomas Bernhardt [ 13/Sep/06 ] |
Released a bug fix jar file esper-1.0.5a.jar available from http://dist.codehaus.org/esper/ |
[ESPER-58] IllegalMonitorStateException logged by engine Created: 06/Sep/06 Updated: 26/Oct/06 Resolved: 10/Oct/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
java version "1.5.0_07" I get this intermittently when running my function tests that include some Esper processing. As none of my code appears in the stack trace I tought you might like to look at it Exception in thread "Timer-6" java.lang.IllegalMonitorStateException |
Comments |
Comment by Thomas Bernhardt [ 09/Sep/06 ] |
I have been able to reproduce this on a multi-core system only, not on a single-core PC. Added log statements to print the theread number acquiring and releasing lock but log shows all in order. Needs further work, is not a critical error since the timer thread has completed its work |
Comment by Thomas Bernhardt [ 09/Sep/06 ] |
Also appears to be related to very frequent "initialize" calls to an existing engine instance |
Comment by Thomas Bernhardt [ 10/Oct/06 ] |
Fixed error in EPRuntime lock use |
Comment by Thomas Bernhardt [ 26/Oct/06 ] |
in 1.2 release |
[ESPER-57] Initialize not resetting types declare via "insert into" Created: 06/Sep/06 Updated: 20/Sep/06 Resolved: 09/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
[[ finding reported ]] Is there any way to clear out a service provider instance completely or should I just grab another instance (which I realise would solve this problem - yes). In this case what is the initialize method for? [[ finding reported ]] So, it seems to me that initialize should clear out type definitions. [[ comment ]] Note that a statement can be stopped and any event type created via "insert into" can be reused as long as the number of properties and types match the other statement(s). |
Comments |
Comment by Thomas Bernhardt [ 09/Sep/06 ] |
Changed EPServiceProviderImpl to snapshot the config entries and keep these, then construct new services on initialize using the config snapshot and not reuseing the services (event adapter and auto import services are config-driven) |
[ESPER-56] count(*) always returns 0 Created: 30/Aug/06 Updated: 30/Aug/06 Resolved: 30/Aug/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | srdan bejakovic | Assignee: | srdan bejakovic |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
"select count from MarketDataBean.win:time(1)" returns 0 regardless of the number of actual events. |
Comments |
Comment by srdan bejakovic [ 30/Aug/06 ] |
The bug was in ResultSetProcessorFactory, which used the presence of aggregated properties instead of the presence of aggregated functions to decide which processor to create. |
[ESPER-55] Mechanism to support EventType Adaptors for legacy Java classes Created: 29/Aug/06 Updated: 26/Oct/06 Resolved: 27/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Noah Campbell | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified | ||
Environment: |
n/a |
Number of attachments : | 0 |
Description |
Hi have a class A defined that each properties does not follow the JavaBean naming convention of get/set/is. I need a way to specify the properties and the getter during configuration. |
Comments |
Comment by Thomas Bernhardt [ 08/Sep/06 ] |
Good point - we could allow configuring the method names for classes that return the event property values rather then automatically deduce them from the Class. As a workaround, one could of course wrap the legacy class, if feasible, with a minimal POJO that acts as an event container. The wrapper class would expose the JavaBean-style getter methods and internally call the legacy object it wraps to obtain event properties. Yet that requires writing a wrapper class. Will schedule for 1.5 release. |
Comment by Noah Campbell [ 08/Sep/06 ] |
Great, glad to see it on the roadmap. I did write a wrapper class for the top level object, but realized I had to repeat the process for a private collection. It returned an object that had the same, non-javabean, method signature. I wanted to use the CollectionUtils (jakarta collections) to wrap the request so I didn't have to do a deep copy on each request to the collection field, but the cglib couldn't handle it. I had to make a copy of the collection on every request. |
Comment by Thomas Bernhardt [ 27/Sep/06 ] |
Will be in next release. |
Comment by Thomas Bernhardt [ 26/Oct/06 ] |
in 1.2 release |
[ESPER-54] select-clause istream and rstream keywords Created: 25/Aug/06 Updated: 26/Oct/06 Resolved: 22/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
[[ original request ]] [[ reply from Tom ]] I think I would prefer staying with one type of UpdateListener though to keep the API simpler. The "rstream" keyword would generate newEvents just as the "istream" keyword would. [[ response ]] |
Comments |
Comment by Thomas Bernhardt [ 22/Sep/06 ] |
implemented in branch enhancements110, next release |
Comment by Thomas Bernhardt [ 26/Oct/06 ] |
in 1.2 release |
[ESPER-53] Consuming pattern-generated events in EQL Created: 17/Aug/06 Updated: 20/Sep/06 Resolved: 19/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
[[ original request ]] [[ reply with question ]] I agree, by assigning a name to a pattern statement that stream could be used in a further statement. The EQL equivalent syntax is the "insert into" syntax. Do you suggest assigning the name through the API? I presume a new method "createPattern(String onExpression, String eventStreamName)" would be added. Or would you suggest allowing a pattern syntax like "insert into MyStream A() -> B()"? [[ reply ]] |
Comments |
Comment by Thomas Bernhardt [ 19/Sep/06 ] |
available as of 1.1.0 |
[ESPER-52] EQL windows take seconds parameter while patterns take milliseconds parameter Created: 16/Aug/06 Updated: 26/Oct/06 Resolved: 08/Oct/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Bug | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
That looks fine to me. Thomas Bernhardt wrote: > |
Comments |
Comment by Thomas Bernhardt [ 17/Aug/06 ] |
[[ from Alex]] harder to write 3s500ms though we could say in this case the syntax is timer:within(3.5s) |
Comment by Thomas Bernhardt [ 09/Sep/06 ] |
Assigned to 1.5 for future enhancement |
Comment by Thomas Bernhardt [ 06/Oct/06 ] |
[[ start of discussion ]] I'd like to suggest a new grammer for time intervals. If you are interested, please feedback. This is for use in time-based windows and pattern statements with timers. The purpose is to make statements with time windows and patterns a bit more readable. There is also an outstanding issue http://jira.codehaus.org/browse/ESPER-52 where pattern and time windows take millseconds versus seconds. Some examples of the grammer could look like this: The grammer would allow several options for specifying time: time_interval := (number days)? (number hours)? (number minutes)? (number seconds)? (number millis)? hours := hr | hour | hours [[ Feedback ]] I agree with this. hours := h | hr | hour | hours |
Comment by Thomas Bernhardt [ 06/Oct/06 ] |
The syntax (1d 2h 3m 4s 5ms) creates a problem in that 1d is 1 double in Java. Also 1L is a long and 1E10 is a double 100. |
Comment by Alexandre Vasseur [ 08/Oct/06 ] |
Tom, do you mean this is due to a technical complexity ? The y/m/d/s/ms syntax seems way more intuitive and common to me. |
Comment by Thomas Bernhardt [ 08/Oct/06 ] |
I think potential user confusion and technical complexity are the two problems. A statement such as "select 1d where A.win:time(1d)" -in that statement the 1d would both be a double-typed 1 as well as 1 day for the time window. The time window currently already takes a double number of seconds as a parameter, therefore, for example, "win:time(1.02d) is 1.02 seconds or 1.02 days? Technical complexity because the Esper ANTLR lexer (breaks string into tokens for parser to process) is based on Java. Thus the lexer outputs "1d" as a NUM_DOUBLE token, I believe, which could not be told apart from "1.0" at a parser level. Thus I think the lexer changes that would be required and therefore also parser changes would be more work. I agree that "win:time(1s)" reads slightly better then "win:time(1 sec)", perhaps. |
Comment by Thomas Bernhardt [ 08/Oct/06 ] |
The "timer:within", "timer:interval" and "win:ext_timed" now take a second parameter or a time period parameters (such as 5 min 3 sec) -no longer milliseconds |
Comment by Thomas Bernhardt [ 26/Oct/06 ] |
in 1.2 release |
[ESPER-51] Add "output first" to reduce duplicate output Created: 09/Aug/06 Updated: 17/Aug/06 Resolved: 17/Aug/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | srdan bejakovic |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
[ original user request ] I would like to be notified at the start of the interval not the end for the output clause of an EQL statement. So maybe with a 'first' keyword we would have something like... select * from StockTickEvent.win:length(5) output first every 90 seconds ...would output the first one as soon as its found and then whatever is the first one 90 seconds later. This allows me to watch for situations such as a rate falling below a threashold and only be informed every now and again (output interval) but be informed the moment it first happens. Currently I can only be informed at the end of the output interval. [ comment by Tom ] |
Comments |
Comment by Thomas Bernhardt [ 17/Aug/06 ] |
code changes in trunk |
[ESPER-50] Substitution parameters for statements & user property types Created: 09/Aug/06 Updated: 15/Sep/07 Resolved: 06/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.5 |
Fix Version/s: | 2.0 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Alexandre Vasseur |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
[ original request below]
For example, rather than... administrator.createPattern("every Thing(a=" + aValue + ",b=" + bValue+ ")") ... you would do... administrator.createPattern("every Thing(a=?,b=?)", aValue, bValue) ... or ... EPStatement pattern= administrator.preparePattern("every
"someGuidProperty.hex=" + guidInstance.hex() ... (GUID has a hex method returning 32 hex characters). Cannot esper If you combine this with jdbc-like parameters above then I would be able EPStatement pattern= administrator.preparePattern("every Thing(guid=?)"); ...and it will be more efficient for esper to use my equals method [ comment by Tom ] The support for other property types is another good one. This feature seems to require substitution parameters since the parser would not by able to recognize user types, I think. It would make filters and statements in general more convenient to use and efficient for user types. I'll also add this to the roadmap. |
Comments |
Comment by Thomas Bernhardt [ 06/Sep/07 ] |
in 1.11 |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-49] Event stream view that posts no old events, is unlimited depth, and prohibits joins against other streams not windows Created: 07/Aug/06 Updated: 21/Sep/06 Resolved: 21/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.0 |
Fix Version/s: | 1.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
This would be useful for just totalling up events when we not care about any particular window, but just want to sum it all up, for example |
Comments |
Comment by Thomas Bernhardt [ 21/Sep/06 ] |
With 1.1.0 release it is possible to simply specify no child view. Closed since the result is the same. |
[ESPER-48] Multithread-safety Created: 04/Aug/06 Updated: 11/Jan/07 Resolved: 11/Jan/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Performance |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Currently an engine instance is not multithread-safe. Use internal locking to make an engine instance multithread-safe by synchronizing sendEvent with EPAdministrator and statement start/stop etc., potentially is an configuration option. Advanced: intelligently or through configuration associate statements to threads supplying events (segregation) more analysis to be performed |
Comments |
Comment by Alexandre Vasseur [ 24/Dec/06 ] |
deleted long comment, will open sub issue |
Comment by Thomas Bernhardt [ 11/Jan/07 ] |
In 1.5 release |
[ESPER-47] site.xml says Maven which mirrors in html header names on public site Created: 21/Jul/06 Updated: 21/Jul/06 Resolved: 21/Jul/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Documentation |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Bug | Priority: | Major |
Reporter: | Alexandre Vasseur | Assignee: | Alexandre Vasseur |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
site.xml says Maven which mirrors in html header names on public site |
Comments |
Comment by Alexandre Vasseur [ 21/Jul/06 ] |
fixed |
[ESPER-46] Create market data feed example Created: 17/Jul/06 Updated: 04/Aug/06 Resolved: 04/Aug/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Examples |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.5 |
Type: | Improvement | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 04/Aug/06 ] |
completed, posted case study on site, simulator also available on command line |
[ESPER-45] Output Adapter - CSV files Created: 14/Jul/06 Updated: 27/Apr/12 Resolved: 27/Apr/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 27/Apr/12 ] |
in release 4.6.0 |
[ESPER-44] Analysis persistence or cache backing strategy for robustness Created: 13/Jul/06 Updated: 19/Nov/07 Resolved: 19/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 2.0 |
Type: | Task | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 19/Nov/07 ] |
Addresses in EsperHa product |
[ESPER-43] Timer behavior is non-deterministic between and within statements Created: 06/Jul/06 Updated: 09/Jul/06 Resolved: 09/Jul/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.0 |
Fix Version/s: | 1.0 |
Type: | Bug | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
The timers for example for a statement such as "select * from StockTick.win:time(30) output every 5 sec" the time window and the output limit timer may fire either the window first, or the output limit first. |
Comments |
Comment by Thomas Bernhardt [ 09/Jul/06 ] |
scheduling service now requires each callback to registers with a slot, which is allocated from buckets. Callbacks for the same time are order by buckets first and within bucket by slot. Statements associate with buckets and elements using scheduling associate with a slot. |
[ESPER-42] EQL - support for IF/THEN/ELSE and CASE Created: 05/Jul/06 Updated: 20/Sep/06 Resolved: 19/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Yves Greatti |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Yves Greatti [ 07/Jul/06 ] |
Assiged to me Yves Greatte. |
Comment by Yves Greatti [ 12/Sep/06 - Visible by: esper-developers ] |
Core of the feature completed. Regression testing in progress. |
Comment by Yves Greatti [ 16/Sep/06 - Visible by: esper-developers ] |
Regression testing complete. Most of the feature has been covered. Tom will review it, finalize (include error handling) and close it. |
Comment by Thomas Bernhardt [ 19/Sep/06 ] |
available as of 1.1.0 |
[ESPER-41] EQL - plug in a view or a new aggregation function Created: 05/Jul/06 Updated: 07/May/07 Resolved: 24/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.0 |
Fix Version/s: | 1.8 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Allow configuration of a user-defined....
|
Comments |
Comment by Thomas Bernhardt [ 07/May/07 ] |
in release 1.8 |
[ESPER-40] Pattern - plug in a pattern guard and pattern observer function Created: 05/Jul/06 Updated: 07/May/07 Resolved: 18/Apr/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 1.8 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 07/May/07 ] |
in release 1.8 |
[ESPER-39] Plug in an event type Created: 05/Jul/06 Updated: 11/May/08 Resolved: 10/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.11 |
Fix Version/s: | 2.1 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 04/May/08 ] |
Assigned to 2.1 |
Comment by Thomas Bernhardt [ 11/May/08 ] |
in release 2.1 |
[ESPER-38] EQL - support for pull API for join EQL statements Created: 05/Jul/06 Updated: 21/Dec/07 Resolved: 16/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.0 |
Fix Version/s: | 1.12 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 16/Nov/07 ] |
In release 1.12 |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-37] Managability - runtime engine management (monitoring, start/stop, config changes) Created: 05/Jul/06 Updated: 04/May/08 Resolved: 04/May/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 04/May/08 ] |
Duplicate to other JIRA |
[ESPER-36] Robustness - distributed caching Created: 05/Jul/06 Updated: 17/Sep/09 Resolved: 17/Sep/09 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | None |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 17/Sep/09 ] |
change fix version |
[ESPER-35] Robustness - event transaction log and engine state persistance, recovery Created: 05/Jul/06 Updated: 21/Dec/07 Resolved: 19/Nov/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 16/Aug/06 ] |
[[ original request ]]] [[ respone to below email by Tom]] I think a transaction log would allow us to replay past events into an engine and thus restore engine state. The transaction log would need to be tailored to the specific statement(s) and window requirements. For example a length window of 100 events would result in a rolling transaction log of the last 100 events. We would probably write the log asynchronously. When an engine starts up it could recover it's state from the set of known transaction logs via replay. Very long running statements could potentially accumulate very large quantities of data in a transaction log. Would a replay of the full set of events over 3 month be feasible - possibly not. I think a solution would be to persist engine state as it changes as well as persist events to a transaction log, which then serves more as a persistent backing of window contents rather then a replay store. When an engine recovers, it would then read the engine state from persistence, and attach to the logs to manage window contents i.e. events leaving the window etc. I agree that the statement and engine configuration would be the place to specify persistence is required. Relational databases are readily available in many environments, and distributed caching products are gaining traction. Would you recommend either of these technologies or do you see Esper providing it's own persistence files through java.nio or java.io? |
Comment by Thomas Bernhardt [ 19/Nov/07 ] |
Resolved by EsperHA |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
in EsperHA |
[ESPER-34] Doc - Patterns of use Created: 05/Jul/06 Updated: 09/Aug/06 Resolved: 09/Aug/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 09/Aug/06 ] |
Solution patterns has been started on web site |
[ESPER-33] GUI for modeling, testing, drag&drop composition, configuration, record&playback, visualization of streams, debugging, step forward/backward Created: 05/Jul/06 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Addressed by Enterprise Edition |
[ESPER-32] Performance - multi-thread safe single engine instance Created: 05/Jul/06 Updated: 21/Sep/06 Resolved: 21/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 21/Sep/06 ] |
Closed - duplicated with |
[ESPER-31] Performance - precompiled statements to reduce statement creation time Created: 05/Jul/06 Updated: 15/Sep/07 Resolved: 06/Sep/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 15/Sep/07 ] |
in release 1.11 |
[ESPER-30] EQL - join against storage-based tables (JDBC and chaching) Created: 05/Jul/06 Updated: 14/Nov/06 Resolved: 09/Nov/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Alexandre Vasseur [ 03/Nov/06 ] |
Tom seems the proto is how about with a "database:db/schema" prefix (assuming db / schema is referenced in config) and why do we have to have a double [[ ? let me know if I got anything wrong |
Comment by Thomas Bernhardt [ 03/Nov/06 ] |
ok lets make these changes select id, name, address from Bean as s0, = customers.custid] Note that I made the following changes:
I haven't yet found a use for schema, that seems to be mostly either in the table name and sql, or in the connection URL? Here is the XML configuration design: <!-- Sampe configuration for database access using DriverManager; retains connections associated with a statement, closing the connection when a statement is stopped --> |
Comment by Thomas Bernhardt [ 04/Nov/06 ] |
Since the $ {property}notation can have indexed properties (e.g $ {indexed[1]}), the single bracket [ ] is trouble parsing out and would need to be escaped - ugly. Back to the double brackets [[ and ]] select id, name, address from Bean as s0, = customers.custid]] |
Comment by Alexandre Vasseur [ 04/Nov/06 ] |
sounds good might be good here to resolve from stream, and we'll use the "?param" in the prepared statement syntax so that the resolution mechanism is really clear. |
Comment by Thomas Bernhardt [ 14/Nov/06 ] |
in release 1.3 |
[ESPER-29] EQL - support for keep-all window Created: 05/Jul/06 Updated: 21/Sep/06 Resolved: 21/Sep/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.0 |
Fix Version/s: | 1.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 21/Sep/06 ] |
This could simply be done via a very large length window - closed |
[ESPER-28] EQL - externally controlled insert/delete window and API Created: 05/Jul/06 Updated: 07/Dec/07 Resolved: 07/Dec/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.0 |
Fix Version/s: | 1.12 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 07/Dec/07 ] |
In 1.12 in the form of named windows |
[ESPER-27] EQL - jumping/tumbling window Created: 05/Jul/06 Updated: 22/Feb/07 Resolved: 06/Feb/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.6 |
Fix Version/s: | 1.6 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Length based or time based window that resets (clears) every N events or N seconds |
Comments |
Comment by Thomas Bernhardt [ 28/Jan/07 ] |
User comment: I notice that you have a time-based batching mechanism (win:time_batch), but I don't see a similar row-based batching mechanism (i.e. to specify that n events should be batched prior to processing). Is this functionality available through some other means? |
Comment by Thomas Bernhardt [ 22/Feb/07 ] |
in release 1.6 |
[ESPER-26] EQL - sort window allowing multiple columns and expressions Created: 05/Jul/06 Updated: 09/Aug/06 Resolved: 09/Aug/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 09/Aug/06 ] |
Closed since the existing sort window already allows multiple columns. Just order-by expressions are not supported but could be worked-around by providing the expression via a further select statement or within the event property getter method itself. |
[ESPER-25] EQL - support for 'prior' operator Created: 05/Jul/06 Updated: 26/Dec/06 Resolved: 16/Dec/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
For access of prior events in arrival order, or window sort order Do we want to allow access to prior events in an event stream in EQL? Points (A) (B) (C) outline a couple of proposals... (A) Provide a stream index operator in [number], such as below example. Example: select s0[1].price from StockTicks.win:length(100) as s0 s0[0] would select the current row or top of the data window, in window sort order if this is a sorted window. (B) Have a previous function with syntax "previous(expr, property)" Example: select previous(1, price) from StockTicks.win:length(100) The previous function is equivalent to the stream index operator only that an expression can be specified to determine the index. For example: select previous(s0.index, s0.price) (C) Have a prior function with syntax "prior(number, expr)" Example: select prior(1, price) from StockTicks.win:length(100) The difference between "prior" and "previous" is that the "previous" is a previous row/event from a data window perspective, while the prior is the earlier evaluation value of the embedded expression. Therefore the sorting or other layout of any data window or view does not affect the prior operator in any way. The prior operator would just hold on to the result of a prior evaluation of the expression. There would be restrictions around where these operators and functions could be used, i.e. not in group by or having, and not with output rate limiting. |
Comments |
Comment by Thomas Bernhardt [ 16/Dec/06 ] |
For 1.4 release |
Comment by Thomas Bernhardt [ 26/Dec/06 ] |
Changes in 1.4.0 release |
[ESPER-24] EQL - support for BETWEEN and IN Created: 05/Jul/06 Updated: 26/Oct/06 Resolved: 12/Oct/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 26/Oct/06 ] |
in 1.2 release |
[ESPER-23] EQL - Support for more operators (string ops ||, modulo %, NOT) Created: 05/Jul/06 Updated: 13/Jul/06 Resolved: 13/Jul/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
[ESPER-22] EQL - support for subqueries Created: 05/Jul/06 Updated: 07/May/07 Resolved: 18/Apr/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.8 |
Fix Version/s: | 1.8 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
A subquery would look like this: select rfidId or select rfidId |
Comments |
Comment by Thomas Bernhardt [ 07/May/07 ] |
in release 1.8 |
[ESPER-21] EQL - support for 'Union' Created: 05/Jul/06 Updated: 11/Jan/12 Resolved: 11/Jan/12 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Set to minor as two statements could have the same listener and observer attached and thus achieve virtually the same |
[ESPER-20] Patterns - causal relationship operators Created: 05/Jul/06 Updated: 26/Oct/07 Resolved: 26/Oct/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.0 |
Fix Version/s: | 2.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 26/Oct/07 ] |
This can be solved already by dedicating properties in an event that identify the causality relationship, and then using these properties to match patterns. For example: |
[ESPER-19] Patterns - operator for no event of any type Created: 05/Jul/06 Updated: 06/Dec/08 Resolved: 06/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 06/Dec/08 ] |
This can already be done via variant event type in pattern |
[ESPER-18] Patterns - Immediate sequence operator Created: 05/Jul/06 Updated: 15/Oct/10 Resolved: 31/Dec/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 31/Dec/08 ] |
This can be done without adding an extra operator via variant streams and NOT-pattern operator. |
Comment by Daniel Huss [ 02/Oct/10 ] |
So we have to write "AND NOT ..." 90 times if we want to match a sequence of 10 events? That's ... great! Too bad the documentation doesn't even mention how the behavior that most people would expect from a sequence operator can be emulated. It's hidden in the FAQ. |
Comment by Thomas Bernhardt [ 03/Oct/10 ] |
Do you want to provide an example why a sequence of 10 events would require 90 "and not"? Note the match-recognize pattern matching can also be used for detecting immediate followed-by, as simple as "pattern (a,b)" |
Comment by Daniel Huss [ 10/Oct/10 ] |
Thomas, thanks for replying so quickly, I had little hope for getting a response at all, hence the extra cocky choice of words. Sorry about that Here's what made me think we needed so many "and not" statements. An example from the every a=F -> ( (b=F(src=a.src) and not S(src=a.src)) -> (c=F(src=a.src) and not S(src=a.src)) -> (d=F(src=a.src) and not S(src=a.src)) -> (d=F(src=a.src) and not S(src=a.src)) -> (e=S(src=a.src) and not F(src=a.src)) ) ) where timer:within(5 min) Given this example and your comment I assumed that we had to do the follwing if we wanted to match a sequence of 10 event types: every a=A -> ( (b=B and not A and not C and not D and not E and not F ...) -> (c=C and not A and not B and not D and not E and not F ...) -> (d=D and not A and not B and not C and not E and not F ...) -> ... ) I don't even know if this pattern would work at all, I haven't tested it. However, using match-recognize as you suggested, we get a statement that is somewhat less verbose: /* * Assumption: all interesting events descend from TEvent. * Sequence pattern: events (A,B,C) arrive in immediate sequence => notify */ create variant schema SequencePatternStream as *; insert into SequencePatternStream select * from TEvent; @Name('Sequence') select a, b, c from SequencePatternStream match_recognize( measures A as a, B as b, C as c pattern (A B C) define A as instanceof(A, org.example.event.TEventA), B as instanceof(B, org.example.event.TEventB), C as instanceof(C, org.example.event.TEventC) ); For comparison here's what I think the same statement might look like using a fictional immediate sequence pattern operator "->!" select a, b, c from pattern [every a=A ->! b=B ->! c=C]; Sorry about the lengthy comment, I hope it's at least somewhat useful to users who searched for "esper sequence" (this page is the first result on google). |
Comment by Thomas Bernhardt [ 15/Oct/10 ] |
The problem with the immediate sequence operator is that its not clear what the semantics would be if the subexpression is not a simple filter expression. For example: What is the semantics of the above? The immediate-sequence operator would only seem to make sense if followed by a Filter expression. Other alternative approaches are using "and not" with "instanceof" or writing a simple single-row function that checks for the desired type. |
Comment by Thomas Bernhardt [ 15/Oct/10 ] |
We'll update solution patterns. Thanks for the input. |
Comment by Thomas Bernhardt [ 15/Oct/10 ] |
We'll update solution patterns. Thanks for the input. |
[ESPER-17] Pattern Filter - null value support Created: 05/Jul/06 Updated: 20/Mar/07 Resolved: 11/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.7 |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Filters don't currently allow null values, where-clauses do |
Comments |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-15] Java integration - support min/maxelement, size etc. for access into event properties that are arrays and collections Created: 05/Jul/06 Updated: 01/Oct/10 Resolved: 01/Oct/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 03/Sep/07 ] |
Consider adding few more advance methods which will be For example: If it will support: |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
With the chained syntax together with plug-in single-row functions in release 4.0 this seems addressed. |
Comment by Thomas Bernhardt [ 01/Oct/10 ] |
Also the dot-operator syntax for access to array/collection size |
[ESPER-14] Java integration - java library methods available in EQL Created: 05/Jul/06 Updated: 13/Jul/06 Resolved: 13/Jul/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | None |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | srdan bejakovic |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
[ESPER-13] Native class JDK5 Enum support in filters, EQL, patterns Created: 05/Jul/06 Updated: 21/Dec/07 Resolved: 12/Dec/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | Core |
Affects Version/s: | 2.0 |
Fix Version/s: | 1.12 |
Type: | New Feature | Priority: | Minor |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Workaround is to simply use the value of the enum, the enum class is otherwise handled correctly as enums are already a Java class |
Comments |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
Comment by Thomas Bernhardt [ 11/Jul/07 ] |
Trying the statement: getting: I have registered the Event and EventType as aliases in my ============ The enums are supported through the Enum class methods. So for example: It makes sense to support the alternative syntax through "type=EventType.STARTED" as well, but we don't currently have that. I have reopened the issue in JIRA http://jira.codehaus.org/browse/ESPER-13 and assigned a low priority. The documentation also will have an example in the next release. |
Comment by Thomas Bernhardt [ 11/Jul/07 ] |
reopened, could be further improved |
Comment by Thomas Bernhardt [ 12/Dec/07 ] |
In 1.12 release |
Comment by Thomas Bernhardt [ 21/Dec/07 ] |
Changes are in release 1.12 |
[ESPER-12] Output Adapter - JDBC Created: 05/Jul/06 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 3.4 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Duplicate to Esper IO DB adapter |
[ESPER-11] Output Adapter for dashboard, charting, BAM Created: 05/Jul/06 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Addressed by Enterprise Edition |
[ESPER-10] Engine Monitoring - JMX console Created: 05/Jul/06 Updated: 08/Nov/08 Resolved: 30/Oct/08 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 2.3 |
Fix Version/s: | 2.3 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
moved to later |
Comments |
Comment by Thomas Bernhardt [ 02/Aug/07 ] |
On load-monitoring the parameters "time to insert one event" and "insert-rate" can give an overview of the Also it could be interesting to know, how many events ar located in the machine |
Comment by Thomas Bernhardt [ 08/Nov/08 ] |
in 2.3 |
[ESPER-9] Output Adapter - Event actioning/alerting API Created: 03/Jul/06 Updated: 04/Aug/10 Resolved: 04/Aug/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 5.0 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 04/Aug/10 ] |
Overlap with output adapters. |
[ESPER-8] Output Adapter - JMS destinations Created: 03/Jul/06 Updated: 20/Mar/07 Resolved: 14/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 2.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Yves Greatti |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-7] Input Adapter - API and configuration architecture Created: 03/Jul/06 Updated: 20/Mar/07 Resolved: 14/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.7 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-6] Input Adapter for reading CSV files Created: 03/Jul/06 Updated: 26/Dec/06 Resolved: 04/Dec/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | srdan bejakovic |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 26/Dec/06 ] |
Changes in 1.4.0 release |
[ESPER-5] Input Adapter for JDBC Created: 03/Jul/06 Updated: 10/Jun/10 Resolved: 10/Jun/10 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 3.0 |
Fix Version/s: | 5.0 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Comments |
Comment by Thomas Bernhardt [ 10/Jun/10 ] |
Already exist in SQL integration capabilities and IO DB adapter |
[ESPER-4] Input Adapter for JMS destinations Created: 03/Jul/06 Updated: 20/Mar/07 Resolved: 14/Mar/07 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.7 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Also process native JMS events |
Comments |
Comment by Thomas Bernhardt [ 20/Mar/07 ] |
In release 1.7 |
[ESPER-3] Input Adapter for XML events Created: 03/Jul/06 Updated: 14/Aug/06 Resolved: 14/Aug/06 |
|
Status: | Closed |
Project: | Esper |
Component/s: | None |
Affects Version/s: | 1.5 |
Fix Version/s: | 1.5 |
Type: | New Feature | Priority: | Major |
Reporter: | Thomas Bernhardt | Assignee: | Thomas Bernhardt |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Number of attachments : | 0 |
Description |
Native DOM and String events
|
Comments |
Comment by Thomas Bernhardt [ 14/Aug/06 ] |
merged to main, docs complete, much code a contribution of Pablo Pavlorian |