GithubHelp home page GithubHelp logo

masesgroup / datadistributionmanager Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 3.0 10.87 MB

A reliable subsystem to distribute data across multiple datacenters using multiple languages (C/C++, .NET, JVM enabled languages) over multiple technologies (e.g. Apache Kafka, OpenDDS, etc)

Home Page: https://ddm.masesgroup.com/

License: Apache License 2.0

C++ 32.99% C 2.63% Batchfile 0.18% Java 30.93% C# 33.27%
apachekafka availability business-solutions businesscontinuity data durability opendds reliability softwareneverlockdown

datadistributionmanager's People

Contributors

github-actions[bot] avatar mariomastrodicasa avatar masesdevelopers avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

datadistributionmanager's Issues

Add documentation generation

Is your feature request related to a problem? Please describe.
It is important to generate documentation related to the project

Describe the solution you'd like
A single site where are accessible the API documentation related to .NET, Java and C++.

Describe alternatives you've considered
N/A

Additional context
N/A

access violation in initialize with KafkaConfiguration

Describe the bug
When a KafkaConfiguration is passed to the SmartDataDistribution Initialize method an access violation occurs.

To Reproduce
compile and execute the following code:

SmartDataDistribution dataDistribution = new SmartDataDistribution();
KafkaConfiguration kConfiguration = new KafkaConfiguration();
//access violations happens in the following line
dataDistribution.Initialize(kConfiguration );

Expected behavior
N/A

Screenshots
N/A

Desktop (please complete the following information):

  • OS: Windows 10 Pro
  • Versione: 10.0.18362 Build 18362

Additional context
the access violation arises on DataDistributionManagerKafka.dll (x86 and x64)

Add Seek method based on timestamp

Is your feature request related to a problem? Please describe.
It would be useful to have a channel seek method based on timestamp and not on offset.

Describe the solution you'd like
Implement a Seek(DateTime dt) method that seeks the channel using the timestamp of the messages on channel to set the reading offset.

Describe alternatives you've considered
No alternatives was considered.

Additional context
N/A

Remove strong dependency from Windows types

Is your feature request related to a problem? Please describe.
The actual implementation use Windows defined types. It is needed to remove this dependency before implements #5.

Describe the solution you'd like
Convert any Windows type (HRESULT, DWORD, and so on) in generic types. Maybe this types can be remapped on Windows types if we are running on Windows.

Describe alternatives you've considered
Use only generic types (int, int64, and so on) without any mapping.

Additional context
It is mandatory for issue #5.

Align web-site style to masesgroup.com

Is your feature request related to a problem? Please describe.
Since main site has a new style, update this web-site to the style of main site

Describe the solution you'd like
At least shall be:

  • added modern template
  • added favicon of mases
  • changed the footer to report info on MASES
  • no more use chocolatey, instead invoke: dotnet tool update -g docfx
  • review menu

Describe alternatives you've considered
N/A

Additional context
See masesgroup/NuReflector#42

Add support for other platform like Linux

Is your feature request related to a problem? Please describe.
The actual implementation is strictly related to Windows environment. It is not possible to use it under other operating systems like Linux.

Describe the solution you'd like
Make it possible to build the solution on other operating systems

Describe alternatives you've considered
N/A

Additional context
N/A

Under heavy stress condition the published payload is not correct

Describe the bug
Using the WriteOnChannel API sometimes the published value reports strange values

To Reproduce
The wrong behavior is not reproducible with a fixed sequence.
Create a loop to write continuously using WriteOnChannel then wait the error to appears.

Expected behavior
The value published shall be always the same written with WriteOnChannel.

Screenshots
N/A

Desktop (please complete the following information):
OS: Win 10 pro
Version 10.0.18362

Additional context
Tested in C#, but should be the same in Java and C++

Add a method to retrieve the actual Channel offset

** Is your feature request related to an issue? Please describe. **
It is not possible to know the actual offset of the Channel, this makes a correct use of the Seek method impossible.

** Describe the solution you want **
The ChannelConfiguration class has a method to retrieve the offset, but the security layer avoids its direct use, making this method public could be a possible solution.

** Describe the alternatives you have considered **
No alternative was considered.

** Additional context **
N / A

Wrong parameter passed for AutoOffsetReset in KafkaChannelConfiguration

Describe the bug
Configuring a KafkaChannelConfiguration to AutoOffsetResetType.beginning beginning results in a wrong parameter passed during the subsystem initialization.

To Reproduce
Steps to reproduce the behavior:

  1. Configure a C# project to use DataDistributionManager
  2. Use the following configuration:
  KafkaConfiguration kConfiguration = new KafkaConfiguration()
  {
  
  };
  KafkaChannelConfiguration kChannelConfiguration = new KafkaChannelConfiguration(kConfiguration)
  {
      AutoOffsetReset = AutoOffsetResetType.beginning,
      ClientId = "MyID",
      GroupId = "MyGroup",
      BootstrapBrokers = "KAFKA_SERVER_IP:PORT",
  };
  1. Define a delegate that write data to a log file or to console, and connect it to the DataDistributionManager Instance LoggingEvent
    dataDistribution.LoggingEvent +=MY_LOG_WRITER_METHOD;
  2. Initialize the DataDistributionManager Instance
    dataDistribution.Initialize(kChannelConfiguration );
  3. Read the log
  4. Find the following messages in log:
    datadistributionmanager.kafka.topicconf.compression.codec - Value : beginning
    set configuration: Invalid value "beginning" for configuration property "compression.codec"

Expected behavior
the value "beginning" shall be configured for the "datadistributionmanager.kafka.topicconf.auto.offset.reset" parameter .

Screenshots
N/A

Desktop (please complete the following information):
N/A

Additional context
Found in C# project, should be the same with other languages.

Workflows are referencing vulnerable actions

Hello, there!

As part of the university research we are currently doing regarding the security of Github Actions, we noticed that one or many of the workflows that are part of this repository are referencing vulnerable versions of the third-party actions. As part of a disclosure process, we decided to open issues to notify GitHub Community.

Please note that there are could be some false positives in our methodology, thus not all of the open issues could be valid. If that is the case, please let us know, so that we can improve on our approach. You can contact me directly using an email: ikoishy [at] ncsu.edu

Thanks in advance

  1. The workflow build.yaml is referencing action ilammy/msvc-dev-cmd using references v1.5.0. However this reference is missing the commit 74a501b which may contain fix to the vulnerability.
  2. The workflow build.yaml is referencing action ilammy/msvc-dev-cmd using references v1.5.0. However this reference is missing the commit 74a501b which may contain fix to the vulnerability.
  3. The workflow pullrequest.yaml is referencing action ilammy/msvc-dev-cmd using references v1.5.0. However this reference is missing the commit 74a501b which may contain fix to the vulnerability.
  4. The workflow release.yaml is referencing action ilammy/msvc-dev-cmd using references v1.5.0. However this reference is missing the commit 74a501b which may contain fix to the vulnerability.

The vulnerability fix that is missing by actions' versions could be related to:
(1) CVE fix
(2) upgrade of vulnerable dependency
(3) fix to secret leak and others.
Please consider updating the reference to the action.

If you end up updating the reference, please let us know. We need the stats for the paper :-)

Split published artifacts

Is your feature request related to a problem? Please describe.
Create a package for the common libraries and different packages containing the libraries of each protocol/extension.

Describe the solution you'd like
Currently the published package contains the full deploy of the repository. Since the repository divides itself in a core logic and different implementations on each protocol, creates multiple packages each one containing the corresponding libraries and code.

Add .NET 8

Is your feature request related to a problem? Please describe.
On November 14 was made public available .NET 8 and the repository projects shall be aligned

Describe the solution you'd like
Upgrade the projects

Describe alternatives you've considered
N/A

Additional context
Must wait at least the availability of .NET 8 in runner images (actions/runner-images#8797)

Upgrade OpenDDS and librdkafka as soos as possible

Is your feature request related to a problem? Please describe.
The project relies on OpenDDS and librdkafka, they evolves and DDM shall align to their latest version

Describe the solution you'd like
When new version of OpenDDS and librdkafka are available, DDM shall be aligned manually

Describe alternatives you've considered
An automatic upgrade cannot be done

Additional context
N/A

Async channel behavior continuously emit OnConditionOrError with a DDM_NO_DATA_RETURNED message

Describe the bug
If a channel is created with CommonConfiguration.EventSync set to false the DDM_NO_DATA_RETURNED message is fired continuously without respect the CommonConfiguration.ReceiveTimeout property.

To Reproduce
1 Start a channel whit the CommonConfiguration.EventSync set to false in configuration.

Expected behavior
If message are received in the timeout window no DDM_NO_DATA_RETURNED shall be fired.

Screenshots
N/A

Desktop (please complete the following information):
N/A

Additional context
The behavior shall be the same independently by the value of EventSync

Remove .NET 5 due to its End of Support

Is your feature request related to a problem? Please describe.
.NET reached End of Support on 10 May 2022

Describe the solution you'd like
Remove .NET 5 target runtime

Describe alternatives you've considered
N/A

Additional context
N/A

Add Maven or Gradle to publish JAR to online repositories

Describe the solution you'd like
When a delivery is created the artifacts shall be published on online repositories (Maven Central or GitHub).

Describe alternatives you've considered
N/A

Additional context
Version 1.1 comes with embbeded resources within JAR, it is now possible to publish the JARs to central repositories. This feature implements the same behavior of NuGet packages.

Make disposable the classes interacting with native code

Is your feature request related to a problem? Please describe.
The management of instance destruction for managed code is now delegated to the garbage collector. This way it is not possible to know what is going on behind the scenes and this can lead to problematic behavior and bugs.

Describe the solution you'd like
Implementing the IDisposable interface in C# and AutoClosable interface in Java for classes related to native code and manage it in native code, to let the developers have more control on what the code really do.

Describe alternatives you've considered
N/A

Additional context
N/A

Add management of transactions in Apache Kafka client

Is your feature request related to a problem? Please describe.
The Kafka module miss a feature available in the underlying subsystem named transactions.

Describe the solution you'd like
Add all the necessary code around the produce method call.

Describe alternatives you've considered
N/A

Additional context
N/A

Doing two times a complete cycle of channel creation, the second call to CreateSmartChannel requires 5 minutes to complete.

Describe the bug
A second call to CreateSmartChannel, after StopChannel and SmartDataDistribution.Stop , using the same configuration to start SmartDataDistribution and SmartDataDistributionChannel, requires 5 minutes to complete.

To Reproduce
Do this initialization:

SmartDataDistribution dataDistribution = new SmartDataDistribution();
SmartDataDistributionChannel Channel;
OPERATION_RESULT Res = new OPERATION_RESULT();

Do this sequence in code

[...]
//Configuration is a valid kafka configuration
Res = dataDistribution.Initialize(Configuration);
Res = dataDistribution.Start(uint.MaxValue);
Channel = dataDistribution.CreateSmartChannel<SmartDataDistributionChannel>(ChannelName, Configuration);
// The following line require 1-2 seconds to be executed
Res = Channel.StartChannel(uint.MaxValue);
// Here you are connected and the communication is active

Res = Channel.StopChannel(10000);
Res = dataDistribution.Stop(10000);

// Here you are ready to do a new run with the same configuration
Res = dataDistribution.Start(uint.MaxValue);
Channel = dataDistribution.CreateSmartChannel<SmartDataDistributionChannel>(ChannelName, Configuration);
//The following line requires 5 minutes to be executed
Res = Channel.StartChannel(uint.MaxValue);

Expected behavior
The first and the second call to CreateSmartChannel shall require the same time.

Screenshots
N/A

Desktop (please complete the following information):

  • OS: Win 10 pro
  • Version 10.0.18362

Additional context
N/A

Upgrade to .NET 6

Is your feature request related to a problem? Please describe.
The package miss .NET 6 target

Describe the solution you'd like
Update everything it is needed to have the latest .NET version

Describe alternatives you've considered
N/A

Additional context
N/A

Channel configured in transmission mode receives messages.

Describe the bug
Channel configured as transmission still receive messages.

To Reproduce
1 Configure a channel in transmission mode
2 Register to Channel_DataAvailable callback
3 Write on channel

Expected behavior
Channel_DataAvailable callback shall not be called.

Screenshots
N/A

Desktop (please complete the following information):
N/A

Additional context
N/A

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.