Giter Site home page Giter Site logo

andrewinci / insulator Goto Github PK

View Code? Open in Web Editor NEW
57.0 5.0 9.0 30.26 MB

A client UI to inspect Kafka topics, consume, produce and much more

Home Page: https://andrewinci.github.io/Insulator/

License: GNU General Public License v3.0

Kotlin 97.78% Python 2.22%
kafka kafka-consumer javafx tornadofx kotlin apache-kafka ui consumer topic avro

insulator's People

Contributors

andrea-vinci avatar andrewinci avatar dependabot-preview[bot] avatar dependabot[bot] avatar georgexcollins avatar r0bturner avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

insulator's Issues

Allow publishing against a specific schema

When publishing to a topic, the json will be serialized using the latest schema for the topic, even if that schema doesn't include all the fields in the json to publish. Additional fields are dropped quietly.

This might only be a problem if the topic schema evolution is fully compatible. I guess with other evolution, you only want to publish with the latest schema?

There's a few things that could be done to improve:

  • Warn if the json being published is not completely covered by the schema
  • Allow the user to choose a schema to publish against (what should happen here depending on schema evolution rules?)

403 from jcenter.bintray.com on auto-update

Describe the bug
Cannot launch fresh insulator install as auto-update fails to download dependencies from JCenter.

To Reproduce
Steps to reproduce the behavior:

  1. Install Insulator from .deb package
  2. Launch Insulator

Expected behavior
Auto-update runs and downloads dependencies

Screenshots
image

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version 20.04.2 LTS

Additional context
I assume this is related to the JCenter/Bintray sunsetting.

Support High-DPI displays

Is your feature request related to a problem? Please describe.
As a user with a 4k laptop display I struggle to read the UI as it does not seem to take into account the high DPI nature of the screen, unlike the rest of my desktop

Describe the solution you'd like
It would be great if Insulator could support high DPI displays

Describe alternatives you've considered
None

Additional context
I'm using GNOME with Wayland on Ubuntu Linux

Improve topics view

  • Show deletion policy
  • Show number of topics
  • Show number of consumed records
  • Disable consumer settings while consuming in topic view
  • Allow text selection in records table

Consumer groups

List consumer groups
Allow to set the partition offsets for a consumer group

Exception at startup caused by: java.lang.ClassNotFoundException: io.confluent.telemetry.api.events.NoOpEventEmitter

Describe the bug
Bug at start in pre-release v0.6.0

org.apache.kafka.common.KafkaException: Failed to create new KafkaAdminClient
	at classpath//org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:587)
	at classpath//org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:516)
	at classpath//org.apache.kafka.clients.admin.Admin.create(Admin.java:133)
	at classpath//org.apache.kafka.clients.admin.AdminClient.create(AdminClient.java:39)
	at classpath//insulator.kafka.AdminApiKt.adminApi(AdminApi.kt:109)
	at classpath//insulator.di.modules.ClusterModule.providesAdminApi(ClusterModule.kt:22)
	at classpath//insulator.di.modules.ClusterModule_ProvidesAdminApiFactory.providesAdminApi(ClusterModule_ProvidesAdminApiFactory.java:42)
	at classpath//insulator.di.modules.ClusterModule_ProvidesAdminApiFactory.get(ClusterModule_ProvidesAdminApiFactory.java:33)
	at classpath//insulator.di.modules.ClusterModule_ProvidesAdminApiFactory.get(ClusterModule_ProvidesAdminApiFactory.java:11)
	at classpath//dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
	at classpath//insulator.viewmodel.main.topic.ListTopicViewModel_Factory.get(ListTopicViewModel_Factory.java:47)
	at classpath//insulator.viewmodel.main.topic.ListTopicViewModel_Factory.get(ListTopicViewModel_Factory.java:13)
	at classpath//dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
	at classpath//insulator.views.main.topic.ListTopicView_Factory.get(ListTopicView_Factory.java:27)
	at classpath//insulator.views.main.topic.ListTopicView_Factory.get(ListTopicView_Factory.java:9)
	at classpath//dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
	at classpath//insulator.di.DaggerClusterComponent.listTopicView(DaggerClusterComponent.java:175)
	at classpath//insulator.viewmodel.main.MainViewModel.<init>(MainViewModel.kt:24)
	at classpath//insulator.viewmodel.main.MainViewModel_Factory.newInstance(MainViewModel_Factory.java:41)
	at classpath//insulator.viewmodel.main.MainViewModel_Factory.get(MainViewModel_Factory.java:32)
	at classpath//insulator.viewmodel.main.MainViewModel_Factory.get(MainViewModel_Factory.java:10)
	at classpath//dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
	at classpath//insulator.views.main.MainView_Factory.get(MainView_Factory.java:45)
	at classpath//insulator.views.main.MainView_Factory.get(MainView_Factory.java:13)
	at classpath//dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
	at classpath//insulator.di.DaggerClusterComponent.mainView(DaggerClusterComponent.java:170)
	at classpath//insulator.views.configurations.ListClusterView.openMainView(ListClusterView.kt:99)
	at classpath//insulator.views.configurations.ListClusterView.access$openMainView(ListClusterView.kt:36)
	at classpath//insulator.views.configurations.ListClusterView$clusterList$1$2.invoke(ListClusterView.kt:78)
	at classpath//insulator.views.configurations.ListClusterView$clusterList$1$2.invoke(ListClusterView.kt:36)
	at classpath//insulator.ui.component.ListViewKt$action$runOpOnSelected$1.invoke(ListView.kt:9)
	at classpath//insulator.ui.component.ListViewKt$action$runOpOnSelected$1.invoke(ListView.kt)
	at classpath//insulator.ui.component.ListViewKt$action$1.invoke(ListView.kt:11)
	at classpath//insulator.ui.component.ListViewKt$action$1.invoke(ListView.kt)
	at classpath//tornadofx.NodesKt$onDoubleClick$1.handle(Nodes.kt:415)
	at classpath//tornadofx.NodesKt$onDoubleClick$1.handle(Nodes.kt)
	at classpath//com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
	at classpath//com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
	at classpath//com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at classpath//com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
	at classpath//com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at classpath//com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at classpath//com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at classpath//com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at classpath//com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at classpath//com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at classpath//com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at classpath//com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
	at classpath//javafx.event.Event.fireEvent(Event.java:198)
	at classpath//javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3563)
	at classpath//javafx.scene.Scene$MouseHandler.process(Scene.java:3865)
	at classpath//javafx.scene.Scene.processMouseEvent(Scene.java:1851)
	at classpath//javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2584)
	at classpath//com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
	at classpath//com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at classpath//com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
	at classpath//com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
	at classpath//com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
	at classpath//com.sun.glass.ui.View.handleMouseEvent(View.java:556)
	at classpath//com.sun.glass.ui.View.notifyMouse(View.java:942)
	at classpath//com.sun.glass.ui.mac.MacView.notifyMouse(MacView.java:127)
Caused by: java.lang.NoClassDefFoundError: io/confluent/telemetry/api/events/NoOpEventEmitter
	at classpath//org.apache.kafka.common.metrics.Metrics.<init>(Metrics.java:83)
	at classpath//org.apache.kafka.common.metrics.Metrics.<init>(Metrics.java:139)
	at classpath//org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:553)
	... 61 more
Caused by: java.lang.ClassNotFoundException: io.confluent.telemetry.api.events.NoOpEventEmitter
	at java.base/java.net.URLClassLoader.findClass(Unknown Source)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	... 64 more

To Reproduce
Steps to reproduce the behavior:

  1. Open the app

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Null Pointer Exception On Record Viewer

Describe the bug
When double clicking on an record with null key (and an Avro value) I'm gettting a pop-up window with a NullPointerException stack trace.

To Reproduce
Steps to reproduce the behavior:

  1. Consume messages with null keys and Avro values
  2. Click to select one of the returned messages
  3. Double click on it to get the record viewer pop-up window
  4. See error in pop-up window

Expected behavior
See the message with the null key

Screenshots
For some reason I am unable to attach a screenshot so, I'll include a detailed description
Pop-up window name: viewModel.keyProperty.value must not be null
Pop-up window message: Error in classpath/insulator.views.main.topic.RecordView$root$1.invoke(RecordView.kt:22)
Pop-up window content:

java.lang.NullPointerException: viewModel.keyProperty.value must not be null at classpath//insulator.views.main.topic.RecordView$root$1.invoke(RecordView.kt:22) at classpath//insulator.views.main.topic.RecordView$root$1.invoke(RecordView.kt:12) at classpath//tornadofx.LayoutsKt.vbox(Layouts.kt:433) at classpath//tornadofx.LayoutsKt.vbox$default(Layouts.kt:144) at classpath//insulator.views.main.topic.RecordView.<init>(RecordView.kt:17) at classpath//insulator.viewmodel.main.topic.TopicViewModel$showRecordInfoView$1.invoke(TopicViewModel.kt:77) at classpath//insulator.viewmodel.main.topic.TopicViewModel$showRecordInfoView$1.invoke(TopicViewModel.kt:25) at classpath//insulator.ui.WindowsManager.openWindow(WindowsManager.kt:21) at classpath//insulator.viewmodel.main.topic.TopicViewModel.showRecordInfoView(TopicViewModel.kt:77) at classpath//insulator.views.main.topic.TopicView$recordsTable$1$3.invoke(TopicView.kt:142) at classpath//insulator.views.main.topic.TopicView$recordsTable$1$3.invoke(TopicView.kt:30) at classpath//tornadofx.NodesKt$onDoubleClick$1.handle(Nodes.kt:415) at classpath//tornadofx.NodesKt$onDoubleClick$1.handle(Nodes.kt) at classpath//com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) at classpath//com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234) at classpath//com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) at classpath//com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) at classpath//com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) at classpath//com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at classpath//com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at classpath//com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at classpath//com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at classpath//com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at classpath//com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at classpath//com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at classpath//com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at classpath//com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at classpath//com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) at classpath//com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) at classpath//javafx.event.Event.fireEvent(Event.java:198) at classpath//javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3563) at classpath//javafx.scene.Scene$MouseHandler.process(Scene.java:3865) at classpath//javafx.scene.Scene.processMouseEvent(Scene.java:1851) at classpath//javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2584) at classpath//com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409) at classpath//com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at classpath//com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447) at classpath//com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412) at classpath//com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446) at classpath//com.sun.glass.ui.View.handleMouseEvent(View.java:556) at classpath//com.sun.glass.ui.View.notifyMouse(View.java:942) at classpath//com.sun.glass.ui.mac.MacView.notifyMouse(MacView.java:127)

Desktop (please complete the following information):

  • OS: macOS Monterey
  • Insulator version 0.8.0(100)

Producer

Allow users to produce to a topic validating against the avro schema (if the schema registry is configured)

Delete schema

Allow user to delete subjects from schema registry

Reporting a vulnerability

Hello!

I hope you are doing well!

We are a security research team. Our tool automatically detected a vulnerability in this repository. We want to disclose it responsibly. GitHub has a feature called Private vulnerability reporting, which enables security research to privately disclose a vulnerability. Unfortunately, it is not enabled for this repository.

Can you enable it, so that we can report it?

Thanks in advance!

PS: you can read about how to enable private vulnerability reporting here: https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository

Smart search

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

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.