Commit Graph

357 Commits

Author SHA1 Message Date
bd88c63aff ensure BSFiles use blocks that are aligned to 512 Byte offsets 2018-10-14 09:00:26 +02:00
a2520c0238 move method only used in tests to the tests 2018-10-13 20:03:02 +02:00
b42fec8fe2 use var keyword 2018-10-13 10:14:52 +02:00
b42bb88dff DiskStorage can allocate and free blocks of arbitrary sizes 2018-10-13 10:03:41 +02:00
0539080200 use byte offsets instead of block numbers
We want to allow arbitrary allocations in DiskStorage. The
first step was to change the hard coded block size into a
dynamic one.
2018-10-12 08:10:43 +02:00
eaa234bfa5 rename put to putEntries
The method name put is used too often so that eclipse has a
hard time finding references.
2018-10-11 19:25:01 +02:00
979e001efd TcpIngestor can handle csv files 2018-10-11 18:56:16 +02:00
6d4e3da672 add test for sending entries with negative values to the ingestor 2018-10-07 09:08:25 +02:00
c2ba395015 remove date.js
All references to date.js were replaced with moment.js.
2018-10-04 19:02:06 +02:00
979d3269fa remove obsolete classes and methods 2018-10-04 18:46:51 +02:00
8939332004 remove the wrapper class PdbDB
It did not serve any purpose and could be replaced by DataStore.
2018-10-04 18:43:27 +02:00
01b93e32ca replace EhCache with a custom implementation
The cache must remove/evict writers after a few seconds, but EhCache
only evicts entries when a new entry is added. That is not acceptable
for us, because that would leave lots of files open and we would need
a second mechanism to close them.
Therefore I write a simple wrapper for a ConcurrentHashMap that evicts
entries after timeToLive+5s.
2018-10-03 20:22:45 +02:00
0e5a47ac10 make sure serialized tags are always sorted the same way 2018-10-03 16:50:09 +02:00
c9dcc77b53 reuse existing PdbFiles 2018-10-03 16:49:46 +02:00
60578b45ec PdbWriters are now closed by the cache TagsToFile
we do not have to close the files when the input streams are idle.
2018-10-03 16:47:29 +02:00
ad630fc6b2 simplify caching in TagsToFile
- PdbFiles no longer require dates to be monotonically
  increasing. Therefore TagsToFile does not have to ensure
  this. => We only have one file per Tags.
- Use EhCache instead of HashMap.
2018-09-30 10:38:25 +02:00
d799682b4d Fix build issue with Java 11.
For some reason the Gradle build with Java 11 failed
because of an inner class. After extracting it the build
no longer fails.
2018-09-29 19:50:05 +02:00
e03fccbdf7 support for negative values in variable byte encoding
We now support negative values. This will allow us to
store time/value sequences that are not monotonically
increasing, so that we do not have to create multiple
files just because some values were send out of order.

This is done by first transforming the values into
positive values by using interleaved encoding (there
is a name for it, but I don't remember it). We are
mapping values like this:
 0 -> 1
 1 -> 2
-1 -> 3
 2 -> 4
-2 -> 5
...

Renamed LongSequenceEncoderDecoder to VariableByteEncoder.
Made methods static.
2018-09-29 19:48:57 +02:00
f07977c27a update java, gradle and third party libs 2018-09-29 09:08:29 +02:00
24fcfd7763 prepare the addition of a date index 2018-09-28 19:07:01 +02:00
1d88c8dfd7 update spring-boot to 2.0.5.RELEASE
update commons-lang3 to 3.8
2018-09-13 18:58:07 +02:00
bd54a8ad8d update gradle to 4.10.1 2018-09-13 18:47:48 +02:00
84350c4dfb move TimeStampDeltaDecoder to BSFile
Now the encoding and decoding code is in the same class.
2018-09-13 13:08:45 +02:00
861797acf7 zoom by mouse wheel 2018-09-13 09:26:43 +02:00
a2e63cca44 cleanup 2018-09-13 08:11:15 +02:00
c6a1291ee6 the pattern must match the property value exactly,
when matching property values to the query. This is important when
you have a property value that is a prefix of another property value,
e.g., AuditService.logEvent and AuditService.logEvents.
2018-09-13 07:55:13 +02:00
2e433ba969 cleanup 2018-09-13 07:52:14 +02:00
61f131571a add CamelCase matching to the query language 2018-09-12 13:42:23 +02:00
86b8f93752 replace 'in' queries with a simpler syntax
field in (val1, val2)
was replaced with
field=val1,val2
or
field=(val1, val2)
2018-09-12 10:10:01 +02:00
1182d76205 replace the FolderStorage with DiskStorage
- The DiskStorage uses only one file instead of millions.
  Also the block size is only 512 byte instead of 4kb, which
  helps to reduce the memory usage for short sequences.
- Update primitiveCollections to get the new LongList.range
  and LongList.rangeClosed methods.
- BSFile now stores Time&Value sequences and knows how to
  encode the time values with delta encoding.
- Doc had to do some magic tricks to save memory. The path
  was initialized lazy and stored as byte array. This is no
  longer necessary. The patch was replaced by the
  rootBlockNumber of the BSFile.
- Had to temporarily disable the 'in' queries.
- The stored values are now processed as stream of LongLists
  instead of Entry. The overhead for creating Entries is
  gone, so is the memory overhead, because Entry was an
  object and had a reference to the tags, which is
  unnecessary.
2018-09-12 09:35:07 +02:00
26dc052b95 cleanup 2018-08-26 09:40:38 +02:00
b7ebb8ce6a new implementation of an integer storage
It can store multiple streams of integers in a single
file. It uses blocks of 512 byte, which is only 1/8th
of the block size the file based data-store uses. This
reduces the overhead and waste of memory for short
integer streams significantly. Storing data in one big
file, instead of many small files, makes backups much
more efficient.
2018-08-26 09:37:56 +02:00
15a72f09d7 use default pointer on result image 2018-08-18 12:52:32 +02:00
2a68fd72da fix: diagonal line in parallelRequests plot 2018-08-18 12:31:11 +02:00
ea5e16fad5 expressions now support in-queries 2018-08-18 10:31:49 +02:00
acc2fa42ef zoom-in on click events 2018-08-18 08:32:57 +02:00
b01d267300 update primitiveCollections
The new version of primitiveCollections requires Java 10.
2018-08-18 08:32:27 +02:00
22f35f9cf5 restrict zoomin via drag'n'drop to the zoomable area
Fixed issues that not the whole area was selected when moving the
cursor too fast out of the selectable area.
2018-08-11 18:12:29 +02:00
41b0ca9100 groupBy was not correctly parsed from a URL 2018-08-11 17:55:38 +02:00
c1974d21b2 replace startDate + dateRange with start and end date
The new datetimepicker can be used to specify date ranges. We no longer
need to define a start date and a range. This simplifies the code
for zooming and shifting considerably.
2018-08-11 17:45:20 +02:00
58623c480f switch date picker to http://www.daterangepicker.com version 3.0.3 2018-08-11 09:09:53 +02:00
6932438ec9 zoom in by selecting the range 2018-08-10 12:47:30 +02:00
14d9216e40 create margins with constant size
With this we will be able to zoom in by selecting a region. The constant
margins allow us to determine the exact timestampt for a pixel position.
2018-08-10 09:56:57 +02:00
786570503a make plot for parallel requests easier to digest
1. draw it below the scatter plot, so that you can see both
2. make the color lighter, so that you can see both
2018-08-10 09:27:19 +02:00
6c091c673d fix indentation 2018-08-10 09:20:55 +02:00
2fae877444 plot parallel requests with style filledcurve
this makes the duration of requests more obvious
2018-08-09 07:51:56 +02:00
1f48f7b851 div for gallery was not correctly hidden
The div for the gallery was not hidden, because VueJS did evaluate
an empty list as false.
2018-08-09 07:47:38 +02:00
7ece779469 do not draw diagonal lines in ParallelRequestsAggregator 2018-08-09 07:37:29 +02:00
f30a8a26d9 add aggregator for parallel requests
ParallelRequestsAggregator generates a line plot that shows the number
of parallel requests among the plotted events.
This plot has two issues:
1. It only considers events that are plotted. Events that occur later,
   but were started within the plotted time frame are not considered.
2. For performance reasons we are only plotting points when a value
   changed. This leads to diagonal lines.
2018-08-09 07:24:51 +02:00
99dbf31d8a update 3rd party libs 2018-08-09 07:20:09 +02:00