0.31 released - Hazelcast, MongoDb and a new onboarding experience

Date
    Changelog entry cover image

    Orbital 0.31.0 - "Alf" Edition

    We’re excited to announce the release of Orbital 0.31.0 - with a large focus on helping new users feel comfortable — which reminded us of a certain ’80s friend. So, we present Orbital 0.31.0 - The “Alf” edition. 👽🛸🏡

    Highlights

    MongoDB support (Preview)

    We now support MongoDB as a datasource, including support for both querying and writing

    Hazelcast support (Preview)

    Building on top of our support for Hazelcast as a cache, Hazelcast is now available as a data source, supporting reads, writes and streams.

    Use a Hazelcast Map as a high speed data store, or use a Map as the basis for a Stream of data, giving you the best of both worlds.

    New onboarding experience

    For those wanting to dip their toes into the world of Taxi and Orbital, we’ve built an onboarding flow which should help get you up to speed in no time! And remember, just like Alf trying to fit in with the Tanners, you might feel a bit out of place at first, but with our guidance, you’ll be navigating through like a pro in no time!

    You’ll see this screen automatically when you don’t have any data sources declared, but you can also view it manually by going to /onboarding.

    The new onboarding flow
    The new onboarding flow
    We welcome feedback in this area of the app, so please take it for a spin and let us know what you think.

    Improved UX for managing projects and data sources

    Now that you’re familiar with adding projects and data sources after completing the onboarding steps, you’ll be happy to hear that those same project import and data source creation steps are available to you outside the onboarding flow. Consistency FTW!

    We’ve completely reworked the Connections page, allowing a more streamlined view of all connections, and their related data sources.

    Viewing connections and data sources all from one screen
    Viewing connections and data sources all from one screen

    If you want to add a new data source, then the same flow that was created for the onboarding flow is now used here as well. It’s like having Alf in charge of the kitchen - he sticks to his recipes with that good ‘ol fashioned consistency that we’re all about here at the house of Orbital.

    Adding a new data source
    Adding a new data source

    Sliding Sidebars

    Ever needed a few more cm’s of screen space and thought, gee that sidebar is taking up a bunch of space? Well, now you can collapse it with a click of the mouse, and regain all that space you’ve been desperately hankering for. We’ll remember your preference as well, and restore things how you left them.

    Optimise your screen real estate, all with one click!
    Optimise your screen real estate, all with one click!

    Controlling services used in a query (preview)

    By popular demand, one of our most requested features is the ability to control which services are called in a query. After all - if Alf taught us anything - given a universe of possibilities, a little navigation can save you landing in a whole world of trouble.

    While designing this feature, we wanted to ensure that Taxi remains declarative - and find a balance between giving users control over which services are called, while remaining resilient and self-adapting as services evolve.

    You can now limit a query to only call specified services, with the using keyword:

    find { Film[] } as {
      filmId : FilmId
      reviews : ReviewScore
    }
    using { FilmsDb, NetflixApi::getReviews }

    The list of allowed endpoints can be a mixture of services (FilmsDb), or even specific operations on services (NetflixApi::getReviews).

    Similarly, you can allow Orbital to call any services except some, using the excluding keyword:

    find { Film[] } as {
      filmId : FilmId
      reviews : ReviewScore
    }
    excluding { ImdbApi, RottenTomatoes::getReviews }

    This too allows combining services and specific operations to exclude.

    This feature is considered in preview, and the syntax may change, so we’re actively seeking feedback.

    Please reach out to share your thoughts.

    Filtering a stream

    We’ve added new support for filtering streams of data server-side (ie., on Orbital).

    Imagine you have a Kafka stream of stock quotes, and you only want quotes for a specific symbol - this is now possible using .filterEach().

    stream { StockQuotes.filterEach( Symbol -> Symbol == 'AAPL' ) }

    Http headers now visible

    We now display HTTP headers in the Profiler view of queries

    Http headers now visible
    Http headers now visible

    Updates to Stream UX

    The Endpoints page now shows the connection status to the Stream Server, along with the current status of individual streams.

    The Stream Page allows enabling & disabling of individual streams.

    Connection status now shown
    Connection status now shown

    Streams now disabled by default

    When a stream appears for the first time in the schema, it’s now disabled by default, and required manually enabling — for the first time only.

    This is to prevent streams - which can be mutating - starting accidentally, because as Alf would say, ‘Hey, no one wants accidental mutations on their hands… or their planet!

    Streams now automatically updated

    Whenever changes are found in a streaming query running on the stream server, the stream is now automatically updated. Previously, this was buggy…Suboptimal.

    CVE Updates

    This build bumps our internal dependencies, addressing the following CVE’s:

    • CVE-2024-22257 Possible Broken Access Control in Spring Security With Direct Use of AuthenticatedVoter
    • CVE-2024-22234 Broken Access Control in Spring Security With Direct Use of isFullyAuthenticated
    • CVE-2024-22259 Spring Framework URL Parsing with Host Validation (2nd report)
    • CVE-2024-22243 Spring Framework URL Parsing with Host Validation
    • CVE-2023-52425 libexpat through 2.5.0 allows a denial of service

    Info

    We upgrade our dependencies regularly to address published CVE's. Based on our independent research, Orbital was not affected by these vulnerabilities.