-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathReleaseNotes.txt
5814 lines (5286 loc) · 381 KB
/
ReleaseNotes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
QDS 3.338:
* [QD-1573] Add Value and Date field replacers
- New ValueFieldReplacer allows to set value to the specified field of specified records.
Specification of this field replacer should be in the following format:
"value:<recordFilter>:<target>:<value>",
where "recordFilter" is a RecordOnlyFilter, "target" is a name of the target field.
- Examples: "value:Quote*:BidPrice:42.42", "value:Summary:DayId:20241225"
- New DateFieldReplacer allows to set date to the specified field of specified records according to the
specified strategy. Specification of this field replacer should be in the following format:
"date:<recordFilter>:<target>:<configuration>[:<timezone>]",
where "recordFilter" is a RecordOnlyFilter, "target" is a name of the date field,
"configuration" is a configuration of the replacing strategy, and "timezone" is a Java TimeZone.
Supported replacing strategies:
- "current" - replaces date with the current date (timezone parameter is supported)
- "previous" - replaces date with the previous date (timezone parameter is supported)
- "<date>" - replaces date with specified date in "yyyyMMdd" format, or 0
- "+<number>" - increases date with the specified number of days
- "-<number>" - decreases date with the specified number of days
- Examples: "date:Summary:DayId:current", "date:Profile:ExdDivDate:-2"
- BACKWARD-INCOMPATIBLE CHANGES:
- Class TimeFieldReplacer$Factory is renamed to TimeFieldReplacerFactory
- Class SetFieldReplacer$Factory is renamed to SetFieldReplacerFactory
* [QD-1578] [EXPERIMENTAL] [Spaces] Launcher tool
* [QD-1595] dxLib: Add support for Log4j2 bridge via SLF4j
* [QD-1597] Leakage in InstrumentProfileCollector
* [QD-1598] [Schedule] Update holidays/short days for 2025
QDS 3.337:
* [QD-1547] Add buffer overflow as a metric for MARS
* [QD-1571] [dxLink] Add acceptAggregationPeriod property for the dxLink QD connector
* [QD-1572] [dxLink] Add "acceptEventFields" property support for dxLink QD connector
- The property allows to reduce set of event fields transmitted over the network.
Event types not included in the property are transmitted with all fields.
- VM option example: -Dcom.devexperts.qd.dxlink.websocket.acceptEventFields=(Quote[bidPrice,askPrice],Order[price])
- Address property example: dxlink:wss://demo.dxfeed.com/dxlink-ws[acceptEventFields=(Quote[bidPrice],Order[price])]
* [QD-1577] [dxLink] Enable MarketMaker record in the dxlink.xml scheme
* [QD-1586] New Order source for BlueOcean ATS: ocea
* [QD-1591] New Order source for IG CFDs Gate: IGC
QDS 3.336:
* [QD-1570] [dxFeed API] Add AGGREGATE, COMPOSITE, REGIONAL OrderSource
- new system property 'dxscheme.unitaryOrderSource=true|false' has been added. It controls whether a single or unitary
source is used when subscribing to all sources. It is set to 'false' by default. All separate sources, such as
'COMPOSITE_ASK', 'COMPOSITE_BID', 'REGIONAL_ASK', 'REGIONAL_BID', 'AGGREGATE_ASK' and 'AGGREGATE_BID' have been
declared deprecated.
* [QD-1569] [dxFeed API] Add MarketMaker event
QDS 3.335:
* [QD-1568] Striping specification breaks QD filters in connection string
* [QD-1567] Exception in logs "Unexpected MBean registration exception"
* [QD-1557] [dxFeed API] Add 'fields' filter to InstrumentProfileComposer
* [QD-1564] [RMI] RMIOperation.valueOf shall support RMIServiceInterface annotation
QDS 3.334:
* [QD-1515] Optimize the performance of striped connections
* [QD-1559] Create TextMessage record
QDS 3.333:
* [QD-1555] Adjust Timing for easier testing
* [QD-1532] [IPF] Allow set Bearer token for authentication
- The AuthToken class has been moved from qds.jar to dxlib.jar.
* [QD-1463] [Schedule] Fix day end in some schedules
* [QD-1553] New order source CEDX
* [QD-1552] Use log4j v2 for unit tests
* [QD-1551] Flaky test: DXEndpointRestoreTest
QDS 3.332:
* [QD-1542] [dxLink] Provide the ability to override the XML parser for the Android environment
- lookup for 'javax.xml.parsers.DocumentBuilderFactory' through service-loading facility was added.
* [QD-201] Support custom symbol striping of QD Collectors
- QDCollector is augmented with SymbolStriper, which can be specified via QDCollector.Builder
- QDEndpoint.Builder and DXEndpoint.Builder provide means to configure SymbolStriper
- New option "--stripe <stripe>" can be used to configure symbol striper
for certain QDS tools like multiplexor and connect
- New JVM property "dxfeed.stripe" can be used to configure symbol striper for related collectors and endpoints;
see "help stripers" for it's syntax
- NOTE: Old system property "com.devexperts.qd.impl.stripe" is deprecated and will be removed later!
(it uses old syntax for number of hash stripes)
QDS 3.331:
* [QD-1543] Exclude OptionSale record from History conflateFilter by default
* [QD-1491] dxFeed API: Allow set notification batch size for subscription
* [QD-1466] dxFeed API: Allow set aggregation period per DXFeed subscription
* [QD-1519] dxFeed API: Re-design logic of EventProcessor
- Feed API uses the same logic of the aggregation period as the network connector.
QDS 3.330:
* [QD-1492] Graceful connections close
- added the JMX 'isAccepting' flag, which describes whether the server can accept new connections
- added JMX operation: 'stopAcceptor' to immediately disable accepting new connections
- added JMX operation: 'stopGracefully' to smothly disconnect all connections and shutdown the socket connector for
a specified period of time
- added JMX operation: 'closeConnections' to smoothly disconnect specified percent of connections during the specified
time period with the additional option to disable socket accepting during operation
* [QD-1540] RecordBuffer throws NullPointerException when using replaceAt methods
* [QD-1539] [Build] Fix flaky test FileWriterTest.testStorageLimit
* [QD-1479] RMI requests waiting to send hanging forever after pending requests rebalanced
* [QD-1536] IPF: Add the new type CERTIFICATE to enum InstrumentProfileType
* [QD-1518] QDStats graph is broken for StripedCollector
* [QD-1499] Implement the statistics per stripe
- JVM parameter "-Dcom.devexperts.qd.logStripedConnectors=false|true" (false by default) can be used
to turn on showing extended stats for striped connectors
- JMX bean for endpoint "com.devexperts.qd.monitoring:type=MonitoringEndpoint,..." can be used to
change the logging/MARS reporting in real time
- BACKWARD-INCOMPATIBLE CHANGES:
- Deprecated class com.devexperts.qd.monitoring.QDMonitoring is removed
QDS 3.329:
* [QD-1528] MessageConnector removal support
* [QD-1531] New order source ARCA
* [QD-1527] [EXPERIMENTAL] Common bind address handling for server connectors
* [QD-1517] Add ability to set connector address via JMX
- setHost and setPort in JMX Bean have been removed - use setAddress
- setHost and setPort on the connector no longer work - use the setAddress
* [QD-1415] Connector restore: return to normal state after failover to backup
- added parameter to client socket connector "restoreTime=HH:mm", available for connectOrder "priority" or "ordered"
- added JMX operations: restoreNow() and restoreGracefully("30s") to restore the connection manually
- added JVM parameter "com.devexperts.qd.qtp.connectionRestoreTime=HH:mm" - restoreTime applied for all connections
if not override in connection params, disabled by default
- added JVM parameter "com.devexperts.qd.qtp.gracefulDelay=5m" - default graceful delay 5m
* [QD-1522] [Tools] qds instruments additional option to write zero result file on disk
- added boolean JVM option "-Dcom.devexperts.qd.tools.instruments.writeEmptyResults" (default=false)
* [QD-1526] [Build] Speedup slow unit tests: FastDoubleUtilTest & AdditionalUnderlyingsTest
QDS 3.328:
* [QD-1405] IPF: PRICE_INCREMENTS: Increase the supported decimal precision up to 1.0E-18
* [QD-1523] Tools: FileWriter with option "tmpdir" uses different file permissions
* [QD-1501] Fix ClientSocketSource races
* [QD-1516] [dxLink] Provide the ability to run on Android
* [QD-1512] BUG FIX: QDS tape-writing facilities works incorrect with tmpDir param
* [QD-1514] [Webservice] Align dxfeed.properties for JMX parameters
QDS 3.327:
* [QD-1508] [dxLink] Provide the ability to run on Java versions later than 8
* [QD-1482] [dxLink] Enhanced WebSocket connection information reporting
* [QD-1507] [dxLink] Provide client information in the SETUP message
* [QD-1494] [dxLink] Provide User-Agent in WebSocket connection
* [QD-1506] [dxLink] Fix the heartbeat timeout configuration
* [QD-85] Support easy configuration for striping of connections
- added client connector property "stripe" (empty by default - no striping), that configures
symbols striper for the connection, e.g. "auto", "byhash4", "byrange-E-L-S-", "by1".
- value "stripe=auto" uses default system striping defined in "com.devexperts.qd.impl.stripe" property.
- value "stripe=by1" disables striping (i.e. mono striping).
* [QD-1480] Tools: Create SubscriptionDumpRepeater tool
- added SubscriptionDumpRepeater tool that can be used as a load generator client based on a subscription profile dump
and reproduce subscriptions (all symbols, subscription types and contracts) for each agent on a separate connection.
* [QD-617] Tools: Add option for keeping temporary tape files (write in progress) separately from completed
- New parameter for the tape recording process "tmpDir=.". Set the directory for temporary incomplete tape recording
* [QD-1502] [Schedule] Misprint in trading venue for XBER
* [QD-1503] New Order source for BlueOcean ATS: OCEA
* [QD-1505] [Schedule] Add holidays for 2024
QDS 3.326:
* [QD-1432] [build] Update build scripts to allow incremental builds
- NOTE: Internal delivery via Maven repository only.
* [QD-1483] [dxLink] Time between reconnection attempts should be increased
* [QD-1481] [dxLink] Error messaging from client to server
* [QD-1493] [Schedule] Access schedule definition
* [QD-1305] QD internal logging cleanup
- Logging in QD project now conforms to industry common practices:
- NOTE: Use of default log category "com.devexperts.QD" is changed to individual class names
- Log levels INFO, WARN, ERROR are used to report status of QD library and DEBUG for developer purposes
- NOTE: Expect more DEBUG logging from QD in the future - fix logging configuration in projects using QD
- QDLog.log is deprecated and is subject for future removal - create specific instances of Logging instead
* [QD-1487] [dxLink] dxLink QD connector on some machines the native image often fails to connect
* [QD-1444] [build] qd-samplecert module shall not be bundled in qds-tools.jar
QDS 3.325:
* [QD-1478] Implementation of toString in OtcMarketsOrder does not output the marketMaker field
* [QD-1475] Enable qds-monitoring for GraalVM Native SDK
* [QD-1476] [EXPERIMENTAL] [dxLink] allow to customize max frame payload length
- JVM parameter "-Dcom.devexperts.qd.dxlink.websocket.maxFramePayloadLength=65536" manages frame payload length.
* [QD-1474] Automate publishing dxlink-websocket to dxFeed public repo
* [QD-1301] Method RecordBuffer.removeAt breaks ongoing iteration
* [QD-1469] [Schedule] Add the schedules for the MICs required for CornerBank
QDS 3.324:
* [QD-1468] QTP parser can allocate an unlimited amount of memory
- new system property 'com.devexperts.qd.qtp.maxMessageSize' defines the maximum size in bytes of a message
delivered over QTP connection with default 100000.
* [QD-1454] [EXPERIMENTAL] [dxLink] dxLink QD connector
* [QD-1467] Use dxfeed maven repo for missing dependencies
* [QD-1465] [Schedule] Incorrect 'sds' value for XIST
* [QD-1462] [Schedule] Add missing sds params and correct sd value for tv.XBUD
* [QD-1460] [Schedule] Add schedule for tradegate
* [QD-1455] Add OtcMarketsOrder record to 'feed' filter
- Records 'OtcMarketsOrder*' has been added to filters 'feed' and 'compfeed'
QDS 3.323:
* [QD-1459] Incorrect QD version in jar manifests
* [QD-1446] Extend bid ask timestamps to millisecond resolution for Quote and MM records
- new system property 'dxscheme.bat' has been added. It controls precision of BidTime & AskTime fields of Quote record
and MMBidTime & MMAskTime fields of MarketMaker record. Accepted values: 'seconds' (default) and 'millis'.
* [QD-1457] Field type configuration properties don't work with DXScheme loader
* [QD-1452] [Schedule] Add new markets for EU exchanges
QDS 3.322:
* [QD-1453] [dxfeed-api] Fix 'BondUS()' trading hours
* [QD-1441] [Schedule] Schedule definition accepts invalid time zones
- new method com.devexperts.util.TimeUtil.getTimeZone is introduced, that throws exception in case of
invalid time-zone ID. JDK option "-Dcom.devexperts.util.TimeUtil.skipTimeZoneValidation=true" can be used
to revert that behavior.
QDS 3.321:
* [QD-1451] QD scheme shall support alpha-numeric characters for exchange code
- new system property dxscheme.exchanges has been added. It defines the range of exchange codes for all regional
records (except Book). The system property 'com.dxfeed.event.market.impl.<record_name>.exchanges' for a individual
record is still supported and has a higher priority. The property value must be a valid character class (in regular
expression terminology). This character class must be a subset of [0-9A-Za-z]. The default value is [A-Z].
* [QD-1447] Create OtcMarketsOrder record
* [QD-1449] Tools: Adjust TDP tool for thread dumps of Java version 11+
- TDP accepts "-n|--name <regex>" option to limit report to specific thread names (by default report all)
- Option "-s|--state <regex>" now accepts regex instead of string
QDS 3.320:
* [QD-1445] Adjust striper filters formatting
- BACKWARD-INCOMPATIBLE CHANGE: RangeStriper and RangeFilter format has changed to use "-" as delimiters.
see qds tools "stripers" and "filters" help article for more info.
* [QD-1438] [Schedule] Add holidays for XPRA and CHIA
* [QD-1442] Cleanup Maven configuration
QDS 3.319:
* [QD-1439] New price level book sources DEX and BZX
- new price level book sources were added for existed DEX and BZX order sources
* [QD-1437] [Schedule] Update bond holidays/short days for 20230406, 20230407
QDS 3.318:
* [QD-1424] EVENT_FLAGS are not set when publishing to a tape file via DXPublisher
* [QD-1429] dxFeed webservice: provide a subscription to event Message
* [QD-1375] Logging facility unit tests spoil project tree by temporary files
* [QD-1435] Migrate all tests to JUnit 4
* [QD-1434] Sweeping snapshot in History causes endless TX_PENDING
* [QD-1427] [RMI] Remove stack traces from remote-delivered exceptions
- By default RMI will remove all stack traces from exceptions delivered over network for security reasons.
Use "-Dcom.devexperts.rmi.removeStrackTraces=false" to disable the default behavior.
* [QD-1431] Update build to maven 3.9
* [QD-1430] [Schedule] Add new markets for EU exchanges
QDS 3.317:
* [QD-1428] dxFeed-OnDemand: Minor performance improvements
* [QD-1423] [Schedule] Update holidays for 2023
QDS 3.316:
* [QD-1421] [Schedule] Add holidays for 2023
* [QD-1418] Remove deprecated HTTP QD connector
- BACKWARD-INCOMPATIBLE CHANGE: all HTTP QD connector classes are removed
* [QD-1420] Update log4j dependency to 2.17.2
* [QD-1419] dxFeed API: Remove deprecated News API
- BACKWARD-INCOMPATIBLE CHANGE: all news related classes are removed
* [QD-1417] dxLib: Deprecate logging implementation based on log4j 1.x
- Log4jLogging using log4j 1.x is deprecated and will be removed in the future.
- Migrate to log4j2 or use its bridge to log4j 1.x.
* [QD-1416] dxlib: Change logging initialization order and try to initialize log4j2 first
- BACKWARD-INCOMPATIBLE CHANGE: use "-Dlog.className=com.devexperts.logging.Log4jLogging"
parameter to force using log4j 1.x logging (if both Log4j and Log4j2 are present in the classpath)
QDS 3.315:
* [QD-1407] [Schedule] Update Australian & UK holidays / Add Netherlands
* [QD-1395] [Schedule] Add SGX holidays and short days 2022
* [QD-1411] Create OptionSale record
* [QD-1412] LongHashMap.putIfAbsent shall handle null-values according to specification
- BACKWARD-INCOMPATIBLE CHANGE: previous versions treated a (k,v)-pair with v == null as "present" and didn't put
a new value. Current implementation will replace a null-value with provided new value.
New behavior conforms to initially declared specification and consistent with default java.util.Map behavior
for maps allowing null values.
* [QD-1410] Handle SocketTimeoutException in SocketAcceptor
* [QD-1408] Use TLS v1.3 and v1.2 for unit tests
QDS 3.314:
* [QD-1404] dxFeed API: Add missing fields to Profile event
- added fields: beta, earningsPerShare, dividendFrequency, exDividendAmount, exDividendDayId, shares, freeFloat
* [QD-1406] Add support for arbitrary URLs to onDemand connector
- ondemand connector accepts a comma-separated list of endpoint addresses, each represented in a form of full URL
or a "host[:port]" format. The latter is equivalent to "http://host:port/MarketDataReplay" URL.
* [QD-1390] Create symbol range QD filter
- added com.devexperts.qd.SymbolStriper class to API (with new filters)
- see qds tools "stripers" and "filters" help article for more info
QDS 3.313:
* [QD-1398] Allow custom executor on InstrumentProfileCollector
- allow to workaround API breaking change in [QD-1344]
* [QD-1397] Add types WARRANT & CFD to enum InstrumentProfileType
* [QD-1396] RMI: NegativeArraySizeException in RMI requests exception handling
* [QD-1394] QDS Tools: "help instruments" still mention MO.dat format after QD-1385
QDS 3.312:
* [QD-1382] Add field replacer which can assign value of one field to another
* [QD-1381] Add support for field replacers to all QD connectors
* [QD-1368] [Connector] Create 'delayed' codec
- Output delay is specified with 'delay' parameter (in millis). Optional buffering limit may be defined by
'bufferLimit' parameter (in bytes): "delayed[delay=20,bufferLimit=100k]+:7000"
* [QD-1392] [Schedule] Add new USA holiday Juneteenth
* [QD-1391] "Already unlinked" IllegalStateException in com.devexperts.qd.ng.RecordBuffer
QDS 3.311:
* [QD-1389] Deprecate HTTP QD connector (to be removed later)
- HTTP connector is deprecated and will be removed in the future.
Please contact dxFeed support if you are still using this functionality.
* [QD-1387] dxFeed webservice: Update jackson library dependency
* [QD-1385] QDS Tools: Remove CMEParser (support for CME MO.dat IPF)
* [QD-1344] InstrumentProfileReader has to check completeness of received profiles
- NOTE: Instrument Profile Format now expects ##COMPLETE tag at the end of IPF file to check
for the completeness of data at the application level!
- InstrumentProfileWriter now adds ##COMPLETE tag at the end when writing IPF
- InstrumentProfileReader now warns in the log on reading IPF without ##COMPLETE tag
JVM parameter "-Dcom.dxfeed.ipf.complete=warn" can be used to control missing complete tag:
* "ignore" - do nothing (for backward compatibility)
* "warn" - show warning in the log (current default)
* "error" - throw exception (will be future default)
- IPF files created by QDS instruments tool will have the ##COMPLETE tag
* [QD-1386] RMI: large payload transfer optimization
QDS 3.310:
* [QD-1383] dxFeed webservice: Allow to set WebSocket send message size in JavaScript client
- added "dx.feed.maxSendMessageSize" setter method (to be called before connecting)
QDS 3.309:
* [QD-1380] qds-tools: collector option "se" is not working
* [QD-1194] Leakage in InstrumentProfileCollector
* [QD-1376] [build] Class names duplicated in "All Classes" list in javadoc
QDS 3.308:
* [QD-1374] [build] License header checking fails on master branch
* [QD-1373] Update build to maven 3.6+ [fix war bundles]
QDS 3.307:
* [QD-1371] Update build to maven 3.6+
- the minimum Maven version required for build promoted to 3.6.0
* [QD-1372] JMXEndpoint exposes authentication credentials in the log
* [QD-1370] [build] Git-history based check of copyright headers
QDS 3.306:
* [QD-1336] [Schedule] Add holidays and short days for 2022
* [QD-1325] Add holidays and shortdays for new countries into default "schedule.properties"
* [QD-1369] Update log4j dependency to 2.17.0
- signal dependent projects using log4j v2+ for logging to update log4j to avoid CVE-2021-45105 vulnerability
* [QD-1326] Add ability to intersect sets of holidays in Schedule syntax.
- New syntax: "...,*US" or "...,*20210101", like minus ("-") but for intersection.
QDS 3.305:
* [QD-1367] Update log4j dependency to 2.16.0
- signal dependent projects using log4j v2+ for logging to update log4j to avoid CVE-2021-44228 vulnerability
* [QD-1335] DXFeedConnect sample incorrectly evaluates supported time series event types
* [QD-1334] dxFeedViewer installer missing required dependencies
QDS 3.304:
* [QD-1327] Relax qds-monitoring dependency of jmxtools
- Important! "com.sun.jdmk:jmxtools" dependency in QD is now "optional" and will not be transitively included by
default. Add this dependency manually to include it in your deliverable artifacts.
* [QD-1331] dxFeed webservice: Stop printing internal connection address on web page
* [QD-1330] Document licenses for the project dependencies
* [QD-1332] Replace LAF in dxfeed-viewer
- JTattoo LAF is replaced with FlatLaf LAF
* [QD-1328] [dxScheme] External scheme overlay requires type of updated record's field
* [QD-1322] dxFeed API: Deprecate News API
- News API (dxfeed-news.jar artifact) is deprecated and will be removed in future versions!
Please contact dxFeed support if you are still using this API.
QDS 3.303:
* [QD-1316] [Schedule] Adjust NewYorkOTC trading hours
* [QD-1318] minify-maven-plugin errors in dxfeed-webservice module
* [QD-1320] dxlib: Add safe publishing to IndexedSet
* [QD-1276] dxFeed webservice: Service keeps expired sessions which leads to memory leaks
* [QD-1314] dxFeed webservice: Migrate to CometD 5.0.8 and Jetty 9.4.42
* [QD-1214] dxFeed webservice: Limit server message queue for slow reading clients
* [QD-1312] Improve Record filters
QDS 3.302:
* [QD-1277] dxFeed API: Make default Order source to support Full Order Book
* [QD-1313] QDS: Avoid warning logging for successful events
* [QD-1311] dxlib: IndexedMap removeAll/retainAll methods on entrySet/keySet behave inconsistently with remove/contains
* [QD-1310] dxlib: IndexedSet removeAll/retainAll methods behave inconsistently with remove/contains
QDS 3.301:
* [QD-1308] Deadlock between OnDemandConnector and DXEndpointImpl.StateHolder
* [QD-1210] dxlib: Update log4j2 version to 2.14.1
QDS 3.300:
* [QD-1302] New order source for SmallEx exchange: smfe
* [QD-1304] [Schedule] Schedule allows inconsistent session definitions
- added warning in log for deprecated usage of 2400 instead of +0000 in time spec
* [QD-1303] dxFeed API: TheoPrice javadoc misses price event field description
* [QD-1300] dxFeed API: Add sample for working with live IPF
* [QD-1297] New order source MEMX
QDS 3.299:
* [QD-1293] Migrate from bintray to artifactory
* [QD-1295] RMI: Completed RMI tasks stay in connection' queue on disconnect
QDS 3.298:
* [QD-1291] dxLib: Add parameterized test factory for quarantined test
* [QD-1290] New order source iex
* [QD-1282] WebAPI Test Client
* [QD-1284] dxFeed webservice: skip license check for 3rd party JS libraries
* [QD-1289] Optimize symbol mapping tables on a subscription downsizing
QDS 3.297:
* [QD-1288] InstrumentProfileReader fails on IPF service request with compression
* [QD-1283] RMI requests waiting to send hanging forever on reconnect
* [QD-1268] [Schedule] Add default FRED schedule
* [QD-1286] [Schedule] Remove 20210403 holiday from US-BOND holiday list
* [QD-1285] Support QD public artifacts publication to dxFeed public Artifactory
* [QD-1247] Prototype of QD scheme configuration via machine readable schema file
- Turned off by default. To turn it on, use "-Dscheme=ext:dxfeed" or other
"ext:" specification.
* [QD-1281] dxFeed API: use "wide" mode by default
- dxFeed API now behaves by default as if JVM parameter "-Ddxscheme.wide=true" was set.
Old default behavior may be restored by running JVM with "-Ddxscheme.wide=false" parameter.
* [QD-1275] Cannot create installer for dxFeedViewer
* [QD-1278] dxFeed webservice: Log error details from REST requests
* [QD-1279] dxFeed webservice: Subscription REST calls should not start a session
* [QD-1273] Update files for year 2021 in copyright
QDS 3.296:
* [QD-1265] [Schedule] Add holidays and short days 2021
* [QD-1224] Schedule API: Trading sessions on holidays should be tied to first following business day
- added schedule property "hds" to turn on HoliDay Strategy. Now supported only "jntdN" (Join Next Trading Day),
where N is a single digit number of days to look ahead for trading day. If parameter is absent or N = 0 the default
strategy is used.
* [QD-1271] dxFeed Viewer shall use wide decimal scheme by default
* [QD-1269] Logging.configureDebugEnabled ignores initially configured logging level
* [QD-1270] Use StringBuilder or direct String concatenation instead of StringBuffer
* [QD-1266] Support compilation with annotation processing in IDEA
* [QD-993] dxfeed-codegen module shall depend on published artifacts
QDS 3.295:
* [QD-1264] dxFeed API: Extend Trade and TradeETH events with new field dayId
* [QD-1225] [Housekeeping] Migrate tabs to spaces, CRLF to LF
QDS 3.294:
* [QD-1262] Handle MARS time synchronization tracker multicast initialization error on MacOS
* [QD-1257] Add connector option to ignore received subscription removal requests
- added 'subscriptionKeepAlive' parameter accepting '0' (default behavior) and 'inf' (ignores unsubscription) values
* [QD-1261] Unsynchronized usage of WeakHashMap in SerialClassContext
QDS 3.293:
* [QD-1246] LongHashMap key_set,values,entry_set,mod_count fields should not be volatile
* [QD-1252] dxFeed API: Add accessor to flags constants for OrderAction in Order
* [QD-1254] QDS: Improve schema generation code
* [QD-1255] dxFeed API: Make "ExecutedSize" field in Order enabled for Full Order Book
QDS 3.292:
* [QD-1251] New order source for cboe C2 options
* [QD-1241] dxFeed API: Extend Order event for Full Order Book
- JVM parameter "-Ddxscheme.fob=true" will add Full Order Book fields to Order record
- List of Order sources that support Full Order Book can be customized by
"-Dcom.dxfeed.event.market.impl.Order.fob.suffixes" parameter (default value="|#NTV")
* [QD-1244] QDS: Add support for long and timestamp fields in QD schema
- Added support for long values and time in millis to com.dxfeed.annotation.EventFieldType
(to enable long use @EventFieldMapping(type = EventFieldType.LONG) annotation)
- Changed ordering of constants in com.dxfeed.annotation.EventFieldType
* [QD-1235] QD Core: Disable conflation for Order events
- JVM parameter "-Dcom.devexperts.qd.impl.matrix.History.conflateFilter" manages which records are conflated;
if "-Ddxscheme.fob=true" is specified, then default value is "!:Order*", else it is "*"
QDS 3.291:
* [QD-1239] New order sources glbx, ntv and xeur
QDS 3.290:
* [QD-1238] Add getZoneId to Timing instances
* [QD-1234] dxFeed API: Extend Underlying and Series events with putVolume and callVolume fields
QDS 3.289:
* [QD-1233] dxFeed API: Extend Trade and Profile events to support additional fields from QD records
QDS 3.288:
* [QD-1227] QD Core: Prevent hash matrix performance degradation in worst cases
QDS 3.287:
* [QD-1232] Keeping data or state in History collector leads to phantom subscription with Long.MAX_VALUE time after rehash
QDS 3.286:
* [QD-1231] HistorySubscriptionFilter performance improvement
* [QD-1228] Add connectOrder property to ClientSocketConnector
- defines order of considering specified server addresses on connect/reconnect.
Supported modes: shuffle (default), random, ordered, priority
QDS 3.285:
* [QD-1229] Improve reportCounters JMX operation to provide top stats of specified size
* [QD-1230] Keeping data or state in History collector leads to phantom subscription with Long.MAX_VALUE time in certain cases
QDS 3.284:
* [QD-1109] Sometimes getTimeSeriesPromise returns empty list
QDS 3.283:
* [QD-1219] Add logging of JMX console initialization errors
* [QD-1222] dxFeed webservice: Close session upon web-socket queue overflow
- "maxQueue" servlet parameter in web.xml or "-Dcom.dxfeed.webservice.comet.DataService.maxQueue=<n>"
JVM parameter can be used to control the queue size at which to disconnect stale client (default = 100000)
(servlet parameter has priority over JVM parameter)
* [QD-1215] Add reconnect functionality to endpoints
* [QD-1223] New order source for FairX exchange: FAIR
* [QD-1221] [Tools] Instruments: transforms for lists
* [QD-1220] dxFeed API: Subscription leak when using filter with DXFeedTimeSeriesSubscription
* [QD-1218] dxFeed webservice: Cannot unsubscribe in time series subscription
* [QD-1217] Update year to 2020 in copyright and reformat import statements
QDS 3.282:
* [QD-1213] TimeFormat performance optimization for serial times processing
* [QD-1216] New order source for SmallEx exchange: SMFE
* [QD-1212] New order source for ABE exchange: ABE
* [QD-1211] [Schedule] Add holidays and short days for 2020
QDS 3.281:
* [QD-1209] EventTime is lost when reading tape files with MESSAGE time format
* [QD-1208] TimeSeriesEventModel.close may throw UnsupportedOperationException
* [QD-1203] AIOOBE in DXFeedMarketDepth sample
* [QD-1136] RMIRequest.cancelOrAbort may miss notifying the server
* [QD-1205] Network tests port allocation management
QDS 3.280:
* [QD-1202] dxFeed API: Add AnalyticOrder event
- com.dxfeed.event.market.AnalyticOrder is introduced.
* [QD-1201] [Schedule] Short days robustness
* [QD-1160] Flaky test: RMIFunctionalityTest.testLargeRequests
* [QD-1172] Flaky test: RMIFunctionalityTest.testLargeResponses
* [QD-1175] Flaky test: RMIFunctionalityTest.testLargeRequestCancellations
* [QD-1195] Publish "shaped" connection codec.
- Output throughput limit is specified with 'outLimit' parameter (as a bytes-per-second float number):
"shaped[outLimit=100k]+:7000"
* [QD-1154] Flaky test: SocketRebindTest
QDS 3.279:
* [QD-1182] [Schedule] Add ability to specify schedule for short days
* [QD-1200] dxFeed API: Move OpenInterest field from DailyCandle to Candle
* [QD-1199] dxFeed webservice: Migrate to cometd 4.0.4 and jetty 9.4.18
* [QD-1196] SSLEngineImpl wrap/unwrap deadlock workaround
- External synchronization is applied for internally used javax.net.ssl.SSLEnginge by default and can be controlled
by JVM parameter "-Dcom.devexperts.connector.codec.ssl.synchronizeSSLEngine=true|false"
* [QD-1193] Deadlock: Indexer vs IndexerFunction initialization circular dependencies
QDS 3.278:
* [QD-1157] New order source for BATS EU: CEUX
QDS 3.277:
* [QD-1171] Add order record for BITIP top20 book
* [QD-1161] DXEndpoint.closeAndAwaitTermination hangs sporadically
* [QD-1159] [Schedule] Incorrect TR 2019 holidays
* [QD-1124] Change schedule.zip default location
- new location: http://downloads.dxfeed.com/schedule/schedule.zip
* [QD-1131] MARS fails to join multicast group for synchronization tracker on Mac OS
* [QD-1142] Flaky test: LargeSubscriptionTest
* [QD-1158] Flaky test: JmxRmiTest.testRmiRestart
* [QD-1174] Tools: DebugDumpReader shall understand wide decimal and ignore unknown classes
QDS 3.276:
* [QD-1156] RMI: Memory leak of one-way requests on server side
QDS 3.275:
* [QD-1155] dxFeed API: OrderBookModel memory leak
* [QD-1153] dxFeed webservice: Split large messages into smaller ones in web sockets
- messages are split into batches of 100, can be configured by JVM parameter
"-Dcom.dxfeed.webservice.comet.DataService.messageBatchSize=<n>"
* [QD-1147] JMX RMI connection doesn't release used port after stop
* [QD-1152] Flaky test: LockTimeoutTest.testLockTooLongWarning
* [QD-1114] Tools: Tape file reader returns quotes partially when 'start' parameter isn't equal to the beginning of a file
* [QD-1139] dxlib: Marshalled shall not create extra copy of serial byte array during deserialization
QDS 3.274:
* [QD-1140] Flaky test: FileConnectorCorruptedTest
* [QD-1138] Data race in DXEndpoint state processing
* [QD-1135] Support limit on the number of connections per server port
* [QD-1133] Tests optimization
QDS 3.273:
* [QD-1132] Tools.invoke involving a FileConnector always takes at least one second
* [QD-1130] Automatic ServerSocket port allocation support for tests
* [QD-1128] qd-tools: ConnectTest takes too long
* [QD-1126] Add Order Record for ERISX exchange
QDS 3.272:
* [QD-1125] dxFeed webservice: Use session filter for one-time REST requests
- not a public API: for internal use only
QDS 3.271:
* [QD-1121] dxFeed webservice: Add support for security checks
- not a public API: for internal use only
* [QD-984] Improve DebugDumpReader to see HistoryBuffer state
- A bug with wrong History "sub" information due to non-resolved enums is also fixed
* [QD-988] BUG FIX: Monitoring tests sometimes fall because the ports are already in use
QDS 3.270:
* [QD-1123] dxFeed API: Make CandleSymbol attribute classes Serializable
* [QD-1113] QD Core: RecordCursor.toString prints both double and wide decimal presentation of wide decimal fields
* [QD-1044] dxFeed API: Support CandlePriceLevel attribute
* [QD-1062] dxFeed webservice: Migrate to cometd 4.0.2 and jetty 9.4.14
- Additional migration notes from CometD: https://docs.cometd.org/current/reference/#_migration_31_to_40
- Additional migration notes from Jetty: https://www.eclipse.org/jetty/documentation/9.4.x/upgrading-jetty.html
* [QD-1116] dxFeed webservice: "Session" parameter is not working in REST API
* [QD-1115] Files are updated for year 2019 in copyright
QDS 3.269:
* [QD-1099] Make DXFeedSubscription and DXEndpoint implement AutoCloseable
* [QD-962] Some tests in AuthorizationTest do not check the declared functionality
QDS 3.268:
* [QD-1107] dxlib: Add util methods to find day ranges for certain number of weeks, months or years with proper alignment
* [QD-1106] BUG FIX: Runtime exception in glob pattern with 2 asterisks on symbol with non-ascii character
QDS 3.267:
* [QD-1105] dxFeed API: Move ImpVolatility field from DailyCandle to Candle
* [QD-1104] Schedule: US exchange closed 5th Dec 2018
* [QD-1103] Add Order Record for NFI exchange
* [QD-1102] RecordCursor.toString should print event flags
* [QD-1101] Fix delegation for IPFFilter
* [QD-1100] RecordBuffer shall compact arrays synchronously
* [QD-1098] BUG FIX: QD Core: History Snapshot protocol sends SNAPSHOT_SNIP flag with virtual time
when second subscription breaks HistorySubscriptionFilter
* [QD-1097] dxFeed-OnDemand: NullPointerException on quering TnS with custom QD scheme
* [QD-1096] dxFeed webservice: Exception in JMX registration with multiple instances
* [QD-1092] dxlib: secure Java deserialization shall throw different exception and shall pass all arrays
QDS 3.266:
* [QD-1076] Support second asterisk in glob patterns in QD filters
* [QD-1090] Monitoring: JmxConnector couldn't be removed
* [QD-1093] QD Core: Auth session must be closed on connection close
* [QD-1095] dxFeed API: Improve support of WideDecimal
- Run JVM with "-Ddxscheme.wide=true" to make all appropriate fields WideDecimal in DXFeedScheme
+ properties "-Ddxscheme.price=wide -Ddxscheme.size=wide" also work to fine-tune specific fields
- DecimalField no longer supports multiplier parameter
- Profile.Shares field is represented in direct shares in all APIs, including RecordCursor
+ it is no longer necessary to multiply or divide Profile.Shares by 1000 when working with APIs
+ on a wire (QTP binary format) Profile.Shares still use thousands notation in TinyDecimal form
although it uses direct shares notation in WideDecimal form
QDS 3.265:
* [QD-760] RMI: Provide ability to define custom load-balancers
- Custom QD RMI load balancer factories (subclasses of RMILoadBalancerFactory) can be configured via service loader.
When a load balancer is to be created, the factories are consulted in order.
- To support custom load balancing the advertisement filter is now supported on connection. Specify the
'[advertise=...]' filter on the address of the agent side. Only the 'all' (all advertisement is distributed),
or 'none' (no advertisement is distributed) values are supported.
- Note: for custom load balancing to work on intermediate multiplexors one has to disable service advertisements
sent to clients via [advertise=none] filter on multiplexor agent address. Otherwise default load balancing will
kick in on the clients.
* [QD-1002] dxFeed webservice should support dxScript
* [QD-1088] dxFeed-OnDemand: Add support for regional TimeAndSale events
QDS 3.264:
* [QD-1036] dxlib: Add primitive type analogs of new Java 8 methods to LongHash collections
* [QD-1086] IPF: cmeproduct transform statement shall preserve option symbol layout
* [QD-1087] Improve network compatibility between WideDecimal and TinyDecimal instances
QDS 3.263:
* [QD-976] Introduce WideDecimal format
- Run JVM with "-Ddxscheme.price=wide -Ddxscheme.size=wide" to make all price, size and volume fields WideDecimal
QDS 3.262:
* [QD-1081] Agent can loss data after resubscription
* [QD-1085] Endless reading of corrupted file
* [QD-1084] dxFeed API: CandlePeriod.toString is not parsable
* [QD-1083] dxFeed webservice: Invalid fields in Json serialization
- Serialization format for XML and Json fixed: removed redundant fields, fields in Json are reordered
according to XML format, refer to XML Schema (dxfeed-event.xsd) for changes.
* [QD-1074] dxFeed API: Add Time and Index fields to Series event, do not represent Expiration as time field
- Index field isn't compatible with previous version (saved Series events shall be generated from scratch)
- Index field contains internal information to distinguish events in series flow
* [QD-1072] dxFeed API: Add Time and Sequence fields to Underlying, TheoPrice events
* [QD-1038] QD shall limit number of historical data by default for missing Indexed and TimeSeries events
- Introduced system properties in format com.dxfeed.api.impl.HistorySubscriptionFilterImpl.maxRecordCount.+'recordName'
com.dxfeed.api.impl.HistorySubscriptionFilterImpl.maxRecordCount.Candle=8000
com.dxfeed.api.impl.HistorySubscriptionFilterImpl.maxRecordCount.TimeAndSale=1000
- Introduced system properties for event categories:
com.dxfeed.api.impl.HistorySubscriptionFilterImpl.maxRecordCount.candle=8000
com.dxfeed.api.impl.HistorySubscriptionFilterImpl.maxRecordCount.timeSeries=1000
com.dxfeed.api.impl.HistorySubscriptionFilterImpl.maxRecordCount.indexed=Integer.MAX_VALUE
- 'candle category' - Candle, Trade.*
- 'timeSeries category' - Underlying, TheoPrice, Greeks, TimeAndSale, TradeHistory
- 'indexed category' - records with QD time not in candle & timeSeries categories (Order* events, MarketMaker, Series)
- In order to leave max record count for 'Candle' events back-compatible this record wasn't included in timeSeries category
- Event max record count will be chosen in the next priority: 'event property' has bigger priority than 'category property',
'category property' has bigger priority than 'old-fashioned property'
- Old-fashioned system properties have lowest priority:
com.dxfeed.api.impl.HistorySubscriptionFilterImpl.candleMaxRecordCount=8000
com.dxfeed.api.impl.HistorySubscriptionFilterImpl.tradeMaxRecordCount=1000
QDS 3.261:
* [QD-1079] Fix flaky FileWriterTest.testFilesAreReleasedAsTimePasses
* [QD-1078] dxlib: TimeFormat shall format dates outside 0000-9999 year range as long values
* [QD-1077] dxFeed API: Mixed content error in Javadoc
* [QD-1039] [Webservice] Add qds-file.jar into dxfeed-webservice.war
* [QD-1070] Update jackson to 2.9.4
* [QD-1012] dxlib: Unescaped text in @Description annotations
* [QD-1069] dxFeedAPI: Add PrevDayVolume to regional Summary events
QDS 3.260:
* [QD-1065] Remove dependency on timetest library
* [QD-1066] BUG FIX: default negation of custom RecordOnly filters shall produce FastRecordFilter
* [QD-1067] dxFeed API: Use fractional sizes internally for aggregations and checks
QDS 3.259:
* [QD-1063] BUG FIX: TapeConnector stops working prematurely
- DXEndpoint.Role.STREAM_PUBLISHER role is created to support tape writing at maximum speed
- ConvertTapeFile sample is provided to demonstrate proper use of dxFeed API for tape conversion
* [QD-1064] dxFeed API: Implement support of fractions to size and volume fields in all events
- Run JVM with "-Ddxscheme.size=decimal" to make size fields fractional (volume fields are always fractional)
QDS 3.258:
* [QD-1060] Prepare QD 3.258 release
* [QD-1058] Remove IDE-specific files from the repository
* [QD-1055] [Schedule] Add holidays for 2018
* [QD-1056] BUG FIX: RMI: Memory leak on server side during normal RMI operation
* [QD-1057] Files are updated for year 2018 in copyright
* [QD-1053] dxlib: Exception stack trace not logged with log4j2
* [QD-1059] dxFeed API: Add support of fractions to size and volume fields in all events
QDS 3.257:
* [QD-1051] dxlib: NPE on log event formatting
* [QD-1052] Add Order source for CFE (Order#CFE)
* [QD-1050] BUG FIX: only 2 levels of SSL-level authentication are supported
QDS 3.256:
* [QD-1049] Fix RMIChannelTest.cancelChannelTasks
* [QD-1048] QD Core: improve performance of record buffer copying
* [QD-1047] dxlib: Add more convenient methods to URLInputStream
* [QD-1046] Hide credentials in logs, management, monitoring, and display
* [QD-1045] Add Order source for ICE (Order#ICE)
* [QD-1042] dxlib: Default console logging with Log4j2 doesn't work
* [QD-1041] BUG FIX: Closure of channel's client-side(due to some reasons) doesn't lead to closure of inner-tasks
* [QD-1040] BUG FIX: Request closure inside of the channel leads to closure of this channel
* [QD-1034] [dxFeedViewer] Should work correctly with JRE8
QDS 3.255:
* [QD-1032] Add Order records for new sources
* [QD-931] RMIEndpoint shall support monitoring properties
* [QD-1027] BUGFIX: TLS protocols and cipher suites system property are not used in the SSLConnectionFactory
* [QD-1029] Improve performance of data formatting
* [QD-1030] Improve performance of instruments tool exclude operation
* [QD-1022] IPF: Authorisation issue in in and notin expressions
* [QD-1031] Migrate from manual license upgrade to maven license plugin
- To add or update a copyright, use the command: mvn license:update-file-header
* Files are updated for new template in copyright
QDS 3.254:
* [QD-1020] dxFeed webservice: Migrate to cometd 3.1.1
- Breaking changes: changed location of JavaScript files:
+ "\js\cometd\org\cometd.js" is moved to "\js\cometd\cometd.js"
+ "\js\cometd\jquery\jquery.cometd.js" is moved to "\js\jquery\jquery.cometd.js" (same with other cometd extensions)
+ "\js\dxfeed\dxfeed.context.js" is deprecated - use it only if you have problems with locating service URL
- dxFeed JavaSciprt API: added ability to set authToken
- Additional migration notes from CometD: https://docs.cometd.org/current/reference/#_migration_30_to_31
* [QD-1023] BUG FIX: Schedule: Bad schedule.properties format leads to unrecoverable errors
* [QD-1019] BUGFIX: NullPointerException in NotIPF filter
* [QD-1024] Tools do not accept several ipfs as source of symbols
* [QD-1025] dxFeed API: Add Buyer and Seller optional fields to TimeAndSale events
* [QD-1026] dxFeedAPI: Add regional TimeAndSale events
QDS 3.253:
* [QD-1021] dxlib: Allow Log4j2 as logging implementation
* [QD-1018] BUGFIX: SubscriptionProcessor stops working after exception
QDS 3.252:
* [QD-1005] Investigate enforcing specific version of TLS (TLS 2.1) programmatically in QD RMI
- tls, ssl codecs and option "isTls' are always working through SSLConnectionFactory
- New property "protocols" for tls codec is introduce in address string.
- New property "cipherSuites" for tls codec is introduce in address string.
- Now address line may look like:
tls[protocols=TLSv1.2,cipher=SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA;TLS_EMPTY_RENEGOTIATION_INFO_SCSV]+:7777
* [QD-1015] [dxFeedViewer] Change default ipf-address protocol from http to https
* [QD-1013] dxlib: Add toString() to TypedMap and TypedKey
* [QD-1014] BUG FIX: JDK1.8.0_121 does't support script javascript in documentation comment
* [QD-1016] BUG FIX: Incorrect translation of close price from OnDemand to Summary record
* [QD-1017] BUG FIX: Spurious ULP formatting in IPF
QDS 3.251:
* [QD-1011] History does not use subscription filter which is specified as service
* [QD-1008] Schedule: Update Turkey holidays for 2017-2019 to schedule.properties
* [QD-1007] Improve CPU usage of idle SocketReader
QDS 3.250:
* [QD-995] Prepare QD for delivering to GitHub
* [QD-998] Add FreeFloat field to Profile record
* [QD-999] dxlib: Add specific factory methods to IndexedSet
* [QD-1001] QD unable to recover after I/O error
* [QD-1004] OnDemand stops replaying events at data block boundary
QDS 3.249:
* [QD-994] FileWriter writes invalid eventTime for "long" and "text" time formats
* [QD-997] QDHistory does not properly store nor transmit event time sequences
QDS 3.248:
* [QD-894] Update time-test to version 1.1
* [QD-987] DXPublisherTest sporadically fails
* [QD-990] Optimize QTP composer for "spurious return" of data/sub provider
* [QD-991] BUG FIX: RMIMessageAdapter does not honor contract for time-based aggregation which leads to data loss/delay
QDS 3.247:
* [QD-985] History transaction sporadically hangs in TX_PENDING state
- Fixed bug with tracking of pending record count during processing in History. In rare cases when HistoryBuffer
sweep crossed subscription time of the agents, the count was improperly tracked.
* Method getSessionVariables() on AuthSession rename to variables()
QDS 3.246:
* [QD-921] Add MDD's TimeReplacer functionality into FileConnector
- New property "fieldReplacer" is introduced in FileConnector to configure field replacing strategies
while reading data. Either single field replacer specification or list of specification,
where each specification is enclosed in square [...] or round (...) brackets, can be used as
"fieldReplacer" property value.
- TimeFieldReplacer is introduced to provide an ability to replace SerialFieldType.TIME fields fields
according to specified strategy. Specification of this field replacer should be in the following format:
"time:<record_filter>:<configuration>", where "record_filter" is a RecordOnlyFilter and "configuration"
is a configuration of replacing strategy.
- Supported replacing strategies:
+ "current" - replaces time with current
+ "<time>" - replaces time with specified
+ "+<time>" - increases time on specified delta
+ "-<time>" - decreases time on specified delta
* [QD-179] Connect tool: make it possible to specify few (more then one) subscription sources
* [QD-977] dxlib: QD Core: add methods and classes to allow faster sorting of RecordBuffer
* [QD-978] Increase default cache size in Schedule and Timing to 25000
* [QD-980] RMI: Fix RMIEndpoint.setAttachedMessageAdapterFactory to support legacy factories
* [QD-981] BUG FIX: dxFeed API: Parsing events from file sporadically fails
* [QD-974] RMIChannelTest.testIntermediateResultChannel is not stable
* [QD-982] RMIChannelTest.testProgressDisconnect fails sporadically
* [QD-983] SymbolSetFilter.valueOf should return dynamic filter in case of given dynamic ipf-filter
- Add dynamic delegate support to SymbolSetFilter
* Added setSubject(Object subject) method on AuthSession
QDS 3.245:
* [QD-127] dxFeed API: Custom user-defined events
- New package com.dxfeed.annotation is introduced with annotations to mark classes for their mapping to QD.
+ Use @EventTypeMapping to mark event type (must directly or indirectly implement EventType interface)
+ Use @EventFieldMapping on getXXX methods to customize types or field names
+ Use @ClassValueMapping to define serializations of enums and other value types
- Module "dxfeed-codegen" is now published to Maven and represents and annotation processor to generate the
corresponding mapping during compilation phase. Add dependency on this module on "compile" scope where needed.
* [QD-915] QD RMI: RMIServiceMethod annotation with support for proxy-based OneWay invocations
* [QD-833] RMI Invoke tool shall supported targeted requests
- Use <name>@<id> when specifying invocation target, where "<name>@<id>" of the service can be found
using "Services" tool, for example.
- Type recognition for Invoke tool is also fixed. Java array type names like "int[]" can now be specified
in argument or result types or par with internal Java class names like "[I".
* [QD-963] BUG FIX: Broken support for 4 letters order sources
- See QD-898. It was broken in QDS 3.244.
* [QD-954] RMIChannelTest is highly timing dependent
* [QD-955] Split RMICommonTest into two test suite
* [QD-966] Use parametrized tests in all RMI-xxx tests for regular and channel-testing variants
* [QD-970] ParallelWriter should exit correctly when its thread is interrupted
* [QD-973] BUG FIX: IPFFilter update check does not authenticate properly
* [QD-972] BUG FIX: MessageDescriptor should contain actual message type id after parsing
QDS 3.244:
* [QD-385] dxFeed API: Introduce getEventTime
- EventType.get/setEventTime methods are introduced and are implemented by all events
- DXEndpoint.DXENDPOINT_EVENT_TIME_PROPERTY="dxendpoint.eventTime" is introduced to turn on event-time support
- Event time is supported when using OnDemandService and when reading/writing from/to files
- Note, that time is 0 when not enabled on DXEndpoint level or when receiving data over network
* [QD-386] Configure DXFeedScheme to include or exclude optional fields
- All optional fields in DXFeedScheme are controllable via system properties or when building DXEndpoint with Builder
- Note, that when DXEndpoint.Build has any property that controls scheme, then it will create its own custom
data scheme based on that configuration, instead of using a default data scheme
- DXEndpoint.DXSCHEME_ENABLED_PROPERTY_PREFIX="dxscheme.enabled." property prefix is introduced
- The general format of those properties is:
dxscheme.enabled.<property_name>=<event_name_mask_glob>
- For example, Quote.BidTime and Quote.AskTime are optional properties (on by default). They can be both
turned off (if not needed, to save network traffic) by setting two properties
+ dxscheme.enabled.BidTime=
+ dxscheme.enabled.AskTime=
- Note, that "EventTime" property is special. It cannot be turned on/off this way. It is addressed in QD-385
- Default scheme (DXFeedScheme.INSTANCE) is configured by "dxscheme.*" SystemProperties
* [QD-847] dxFeed API: Introduce nanoTime in key market events
- Events with business time (getTime method) now also have get/setTimeNanoPart methods, this applied to:
Quote, TimeAndSale, Trade, TradeETH, Order, and SpreadOrder
- Quote event also features getTime method now, which is defined as max(getBidTime(), getAskTime())
- Quote and Trade events also have get/setSequence now
- DXEndpoint.DXSCHEME_NANO_TIME_PROPERTY="dxscheme.nanoTime" property is introduced.
Setting this property to "true" is a shortcut for:
+ dxscheme.enabled.Sequence=*
+ dxscheme.enabled.TimeNanoPart=*
* [QD-674] QD Core API shall provide QDCollector.Builder interface to define extensible list of collector attributes
on creation
- This provides future-extensible set of options that can be specified during creation of QDCollector via
QDCollector.Builder.withXXX methods
* [QD-675] QD Core shall have ability to store and transmit event time stamps
- QDCollector.Builder.withEventTimeSequence is introduced
* [QD-677] Tools shall support collectors with eventTime
- All tools with -c|--collector option support additional [ts] attribute in collector specification that turns on
QD-675 support of eventTime in collectors and its transfer over the network connections
- Syntax for all collector options values in update, so a stream with "storeEverything" mode is now specified
as "stream[se]", while a legacy "stream-se" is still supported for backwards compatibility
* [QD-839] dxFeed API for "storeEverything" mode
- DXEndpoint.DXENDPOINT_STORE_EVERYTHING_PROPERTY="dxendpoint.storeEverything" property is introduced.
Setting it to "true" turns off "storeEverything" mode in all applicable collectors
* [QD-840] QDS "tape" connector
- It supports "tape:<file>[<options>]" connector address and it is a part of "qds-file.jar" module
- It is designed to be used with DXFeed API in order to enable writing events to files
- DXEndpoint.awaitProcessed method is introduced to wait until all data is written to file (if needed)
- See com.dxfeed.sample._simple_.WriteTapeFile sample file
* [QD-863] DXFeed API for OnDemand: Shall provide eventTime
* [QD-952] dxlib: Remove class from TypedKey constructor
- TypeMap.set method is also changed to void method according to the established pattern and consistent with
its use so far.
* [QD-959] dxlib: Introduce TraceLogging as a unified approach for finding concurrency bugs during tests
- Trace logging infrastructure is designed in such a way that it does not consume CPU time when it is not
needed. It is turned on when assertions are turned on.
- Tests can be run with TraceRunner, so that a detailed in-memory trace log is dumped if test does not
complete successfully. Use "@RunWith(TraceRunner.class)" before JUnit4 tests.
- Run JVM with "-DTraceRunner.DumpAlways" to print trace log even when test completes successfully.
This is useful during investigation of tests that fail only periodically to compare failing
trace with a trace on a successfully passing test.
* [QD-942] Fix infinite loops in RMI Tests and resource allocations
* [QD-944] When the Multiplexor is closed, some threads are not closed
* [QD-945] SSLConnectionFactory creates ServiceExecutor which never shuts down
- LoggedThreadPoolExecutor and ExecutorProvider are introduced in dxlib (com.devexperts.util package)
* [QD-960] BUG FIX: RMI sends advertisement messages before protocol descriptor