Bluetooth very inconsistent in making connections

Discussed in https://github.com/iRobotEducation/create3_docs/discussions/435

Originally posted by tribelhb August 22, 2023
How are you connecting to your Create 3?
Bluetooth (Python SDK)
Computer(s) Model(s) and Operating System(s)
M1 MacBook Pro Ventura 13.1
Which version of ROS 2 is installed on your computer?
None
Which firmware version is installed on your robot?
G.5.3
Which RMW is your robot running?
I don't know
What is the Adapter Board's USB/BLE Toggle currently switched to?
Bluetooth (default)
Describe your question.
I renamed the bluetooth interface via the wifi hotspot to iRobot107 as I need to be able to specify which robot to connect to.  Using the python SDK square example (16) and the play frequencies (19) I am occasionally able to get the code to connect, but it seems to get stuck on the disconnect.  The SDK examples are very simple, so there seems to be a major issue in the reliability of these connections.  I updated python from 3.9 to 3.11 and no effect.  Any help would be appreciated.
I also tried plugging into the USB port and switching over to that form, but no serial device appeared under /dev
Has anyone had better luck connecting over USB on linux?  I will be mounting a raspberry pi for camera streaming, so it can easily be plugged into that port...

comments didn't migrate so I'll put them here:
me:
Hi! Could you tell me a few more things about how you are using the robot? I think there might be some confusion about how the interfaces work. If you could provide a terminal log of what you're trying to do when you connect to BLE, and the error messages you get, that could be helpful. To be clear, are you running Linux on a M1 MacBook Pro? As far as plugging the robot directly into your Mac, that will likely not work, as the robot is a USB Host, and likely your computer is, as well. The USB-C connection on the robot not a tty serial device.
Have you tried python.irobot.com? That maintains a continuous BLE connection, as opposed to attempting to disconnect and reconnect from example to example; knowing that would help me to help you debug this.

I will have to try and see if I can connect via the browser.  On Mac OS the python code will hang without any errors, and then a similar error message about None Type not having a .disconnect method only appears after a Ctl-C, but it doesn't trace the code as well as it did on the Raspberry Pi.  In the cases where it does connect it has dropped the connection while commands are being sent--for example the play tones example played about 8 times before going silent and hanging.    Would be very willing to try a patch from source--I won't be able to do so until Monday however.

Running G.5.2 (you said you were running G.5.3 but we haven't released such a version, yet), I cannot duplicate this problem on either Windows 10 or in an M1 Mac running Monterrey (12.6.7). I don't have a Mac running Ventura. I can say that I am running into a different error on my Ubuntu machine which is running BlueZ 5.53; what version of BlueZ do you have (type bluetoothd -v)? I am concerned that this issue is going to be a somewhat gnarly OS-implementation-specific one, but we'll keep investigating.

I have good news, and I have bad news. The bad news is that it seems there was a bug in BlueZ (clue was in https://github.com/hbldh/bleak/issues/1176#issuecomment-1360725995) which is causing the robot to not be able to connect. The good news is that it is fixed. I updated my laptop to BlueZ 5.66 and all is well. This is a little bit of work but it's not too bad. I did the following. YMMV and I apologize in advance if this screws up the Bluetooth GUI:
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.66.tar.xz
(extract this into a folder -- I am a weenie and used the GUI because I can never remember all the tar flags)
cd bluez-5.66 (or wherever you put it)

sudo apt install build-essential libreadline-dev libical-dev libdbus-1-dev libudev-dev libglib2.0-dev python3-docutils
./configure
make
sudo make install
sudo systemctl daemon-reload
sudo systemctl unmask bluetooth.service
 2026  sudo systemctl restart bluetooth

As far as disconnection, I added a new branch, shamlian/catch_and_kill which is (admittedly) a bit of a hammer, but it also seems to solve #3. Feel free to give it a shot and let me know if it helps!

Thank you for this.  Updating BlueZ to 5.66 makes it so that after the program is exited forcefully using Ctl-C, the robot does make a sound to indicate that the disconnection was successful.  It's not clear why the Ctl-C is required.  I did get the error below on one run, despite that single trace now I can connect repeatedly so long as I give it the keyboard interrupt.
(Also I can confirm the firmware was a type-o and it is G.5.2)
Connecting to iRobot108 (00:16:A4:D2:1D:AE)
Traceback (most recent call last):
File "/home/pi/irobot-edu-python-sdk-shamlian-catch_and_kill/demo.py", line 18, in
robot.play()
File "/home/pi/irobot-edu-python-sdk-shamlian-catch_and_kill/irobot_edu_sdk/robot.py", line 287, in play
self._loop.run_until_complete(self._main())
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/pi/irobot-edu-python-sdk-shamlian-catch_and_kill/irobot_edu_sdk/robot.py", line 161, in _main
await self._backend.connect()
File "/home/pi/irobot-edu-python-sdk-shamlian-catch_and_kill/irobot_edu_sdk/backend/bluetooth_desktop.py", line 59, in connect
if await self._client.connect():
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/bleak/init.py", line 471, in connect
return await self._backend.connect(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/bleak/backends/bluezdbus/client.py", line 190, in connect
assert_reply(reply)
File "/usr/local/lib/python3.11/dist-packages/bleak/backends/bluezdbus/utils.py", line 20, in assert_reply
raise BleakDBusError(reply.error_name, reply.body)
bleak.exc.BleakDBusError: [org.bluez.Error.Failed] le-connection-abort-by-local

Regarding "it's not clear why the Ctl-C is required:" to quote from the README on this repo, "This SDK uses a similar format as Learning Level 3 of the iRobot® Coding App (code.irobot.com) and the iRobot® Python Web Playground (python.irobot.com)." The learn-to-code apps maintain a continuous connection with the robots, and use the "play" and "stop" buttons to start and stop code execution. The downloadable SDK doesn't have a separate daemon to keep the connection with the robot alive, so it necessarily has to start and stop that connection at the beginning and end of execution. However, the model of the iRobot Coding app does not have a programmatic way to stop execution within itself, so the program has to be killed with a ^C (as if one were pressing the "stop" button), since all tasks are concurrent and don't know anything about each others' completion. We have discussed adding a stop block; there is a secret (shh, don't tell anyone) stop_program method in utils that might do what you want.

Do you need any more help, or can I close this ticket?

Thanks for the hint--definitely need that ability to send a disconnect command without hitting ctl-c!  I just wanted you to be able to close out with a little more diagnostic info.  I did extensive testing and I have it connecting successfully on Ubuntu 23 and BlueZ 5.66 (although there does seem to be a delay after disconnecting before it will reconnect of many seconds).  It does not work consistently on Ubuntu 22 LTS/BlueZ 5.64 nor on RP OS/BlueZ 5.55.  It is also sporadic on an M1/Mac OS 13.1.

The BlueZ 30s delay feel free to put in an issue for; I have also experienced it and I think I have an idea of why it is happening.

There is a bug in CoreBluetooth on macOS 13.0 which was not fixed until macOS 13.3. We've done everything we can to work around it, but unfortunately that's something that's a little bit broken in the OS. More info here.

Thank you on all counts!  I'll make a new thread if anything else crops up as we use it this fall.


Add num scrapes as tsdb write benchmark command flag

By default, the same value that was hardcoded is used, but with the
new flag added the number of scrapes can be increased to any value.

Thanks!


Remove descendants tracking

Opening an issue here to discuss the effects of descendants tracking and the removal thereof. Gerenally, I'd say that descendants tracking is undesirable because it's a class-level interface and hidden from the user. Currently it's used to populate the registries of relations, mappers and commands automagically.
Here's a couple of points to discuss:

Is it currently possible to require ROM objects before calling ROM.setup?
Will issues arise when using multiple environments?
What's the consequences for the way readers are currently working? AFAIK, a chain of calls to the Reader simply builds a path of said calls, e.g. users.with_posts.active, that is then used to retrieve the appropriate mapper.

The alternative to using descendants tracking is to make registry explicit. Note that this won't bother users of rom-rails or similar integration gems as they would ship with support and conventions for location and name of those classes.
require 'my_app/relations/users'
setup = ROM.setup(...)
setup.register_relation(:users, MyApp::Relations::Users)

The advantages are the removal of a fragile technique, independence of load order and setup time, less hassle in the test suite and simplification of ROM core.
/cc @elskwid @solnic @splattael: We already talked quite a bit about this. :)

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/8231216-remove-descendants-tracking?utm_campaign=plugin&utm_content=tracker%2F155789&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F155789&utm_medium=issues&utm_source=github).

Yeah I'm :+1+ here esp after adding silly code that clears the descendants arrays in specs and rom-rails to_prepare. As you point out this can be done automatically on an integration level with frameworks so it's fine. It would be worth to consider pulling that code into rom core though so that we don't have to do it all over again in every framework integration.

On 02 Feb 2015, at 21:50, Alexander Flatter<EMAIL_ADDRESS>wrote:
Opening an issue here to discuss the effects of descendants tracking and the removal thereof. Gerenally, I'd say that descendants tracking is undesirable because it's a class-level interface and hidden from the user. Currently it's used to populate the registries of relations, mappers and commands automagically.
Here's a couple of points to discuss:
Is it currently possible to require ROM objects before calling ROM.setup?
Will issues arise when using multiple environments?
What's the consequences for the way readers are currently working? AFAIK, a chain of calls to the Reader simply builds a path of said calls, e.g. users.with_posts.active, that is then used to retrieve the appropriate mapper.
The alternative to using descendants tracking is to make registry explicit. Note that this won't bother users of rom-rails or similar integration gems as they would ship with support and conventions for location and name of those classes.
require 'my_app/relations/users'
setup = ROM.setup(...)
setup.register_relation(:users, MyApp::Relations::Users)
The advantages are the removal of a fragile technique, independence of load order and setup time, less hassle in the test suite and simplification of ROM core.
/cc @elskwid @solnic @splattael: We already talked quite a bit about this. :)
—
Reply to this email directly or view it on GitHub.

@aflatter are you interested in making that change? I have other stuff on my plate that I need to do so this is a nice-to-have for me ;)

Sure, I am, but can't give an ETA. :-(

Move to 1.0.0 milestone then?

No pressure whatsoever but do you think you could wrap this up this week so that we can include it in 0.6.0?

I'll try, but I'm behind schedule as I got struck down by a flue. :-(

Sorry to hear that. I'm struggling with an infection myself :/ Seems like we're gonna postpone 0.6.0 release a little bit.

That's funny because while looking at the example in the README I was wondering how was everything linked together ;)
I don't like blackmagic much (but I still use it in some scenario) and that's one reason I would love to go away from activerecord, blackmagic is nice as long at the framework does what you want but as soon as you start doing "out of scope" things then the nightmare begins and you have to dig through piles of code (in activerecord case at least) to figure what the hell is happening and why.
Will 0.6.0 be released with this change ?

The setup process is relatively complex but I wouldn't call it blackmagic. Descendants tracking is gone already but we still use inherited hook to register a class. That's an implicit behavior though and potentially can be confusing, otoh it's just part of the setup, this is not something that's happening at run-time after setup.
Can you tell me which part got you confused wondering how on earth that works?

When I spoke about blackmagic I was not specically refering to what is currently done in rom but that's more a fear about what happens in other projects ^^
This is not directly related to this issue but how the parts are linked to each other is not really intuitive for me, when looking at the current example in the README a bunch of class are defined but almost none of them are directly referenced afterwards and relations between them are defined inside the class declaration.
For example this:
class UserMapper < ROM::Mapper
  relation :users
  register_as :entity

  model User

  attribute :name
  attribute :age
end

got me scratching my head at first and while I think I understand what it does this is a rather unusual way  of doing things, you declare a class referencing other class/entities sometimes by name (:users) and by class (User) and the class itself is never used again directly but instead referenced by another name when doing:
puts rom.relation(:users) { |r| r.by_name("Jane").adults }.as(:entity).to_a.inspect

Since we are not really defining classes I prefer the old notation (will both stay useable ?) with methods and blocks:
setup.relation(:users) do
  def by_name(name)
    where { name == name }
  end

  def adults
    where { age >= 18 }
  end
end

When I look a a this what I am really defining is clear, that's not a class and it does not pretends to be one.
I like the project though, I have been watching it for a long time and it is nice to see that things are starting to take shape :)

Yeah that's why I started with the DSL in the first place. Later on we discovered that it's easier to re-use inheritance mechanisms in ruby vs reinventing them for the DSL purposes.
I believe DSL will stay, maybe it'll be extracted into a separate project (rom-micro? :)) but the class-based approach makes much more sense in bigger projects.
Regarding your concern about defining classes but never having to instantiate them - I can understand the confusion. Fortunately it's easy to explain and we should definitely do a better job here in the documentation.
What you see with the classes and then having all of those instantiated for you is a ROM environment, it's pretty much an object factory that's built into ROM. It simplifies your life as you don't have to deal with object instantiation yourself. I want to take this idea further and extend it with some DI mechanisms too that would work well with ROM core objects.
Keep in mind that it's just a convention, ROM env is just a way to organize those objects, you can instantiate objects yourself if you want and organize them in a different way:
memory_repo = ROM::Memory::Repository.new
user_dataset = memory_repo.dataset(:users)

class Users < ROM::Relation[:memory]
end

class UserMapper < ROM::Mapper
  model name: 'UserEntity' # ROM supports generating model classes
  attribute :name
end

user_relation = Users.new(user_dataset)
user_mapper = UserMapper.build # using build injects default mapper processor

user_relation.insert(name: 'Jane')

puts user_mapper.call(user_relation).to_a.inspect
# [#<UserEntity:0x007fd9c22eddc8 @name="Jane">]

ROM consists of really simple objects, the most complex part is the setup, as I mentioned, but as you can see those objects are dead simple to instantiate yourself. Also notice that in the example above I didn't use the setup at all.

Oh one more thing - ROM env object also exposes a higher-level interface for accessing relations and commands, it has access to all registries so we can have more convenient interfaces built on top of that.

Thanks for the explanations, that was just my first impression after coming back to the project after leaving it aside for some time (last time there only the DSL language, not the classes), I need to play more with it I think to see how things play.
I did not thought about inheritance, does this means you could have a base mapper with specialized ones inheriting from it ?
And since the name of the class means nothing, does it means the following will work the same for the mapper  ? or does the name still plays a role ?
class PolarBearMapper < ROM::Mapper
  relation :users
  register_as :entity

  model User

  attribute :name
  attribute :age
end

Mapper class name is not used at all right now. We only infer dataset name from relation class name.
Regarding inheritance - if you inherit from another mapper its whole header will be copied and then you can override specific attributes if you want.

here is also blackmagic? this generates a relation for me magic?
class Users < ROM::Relation[:memory]
end

Nah it is just a shortcut for ROM::Memory::Relation
On Fri 6 Mar 2015 at 22:15 muescha<EMAIL_ADDRESS>wrote:

here is also blackmagic? this generates a relation for me magic?
class Users < ROM::Relation[:memory]end
—
Reply to this email directly or view it on GitHub
https://github.com/rom-rb/rom/issues/142#issuecomment-77637075.

i mean it creates the :users for me as magic. in other classes i need register_as - but here not

I hear you. This will soon be replaced by policy-over-configuration so
those things will be handled explicitly and you will be able to provide
your own policies too (see how it's done in yaks gem).
On Fri 6 Mar 2015 at 22:18 muescha<EMAIL_ADDRESS>wrote:

i mean it creates the :users for me as magic. in other classes i need
register_as - but here not
—
Reply to this email directly or view it on GitHub
https://github.com/rom-rb/rom/issues/142#issuecomment-77637677.

So, this is finally addressed. We ended up with an optional plugin that enables auto-registration. Disabled by default, to enable you can do ROM.use :auto_registration.


Silently throws away data from the response if it contains UTF-8 characters

When reading data from an Azure CosmosDB graph, where the data contains non-ansi characters, e.g.:
{
"type": "vertex",
"properties": {
"text": [
{
"id": "a0a0eb9e-8679-4c80-a0e4-ea2e00a96b71",
"value": "RT @colisscom: [JS]このスクリプト一つで、さまざまな用途に合わせたスライダーが実装できて便利 -Tiny Slider\n\nhttps://t.co/ObL6zbEAN4 https://t.co/J0KtrMAgor"
}
],
...
I'm seeing a lot of the data getting silently lost.  The problem occurs here in GremlinClient.js:
handleProtocolMessage(message) {
let rawMessage, requestId, statusCode, statusMessage;
try {
const { data } = message;
const buffer = new Buffer(data, 'binary'); <<<< message.data is a string, and message.binary = false
rawMessage = JSON.parse(buffer.toString('utf-8'));
requestId = rawMessage.requestId;
statusCode = rawMessage.status.code;
statusMessage = rawMessage.status.message;
} catch (e) {
this.warn('MalformedResponse', 'Received malformed response message'); <<<< HITS HERE
return;
}
In this case the message is already a UTF-decoded string (message.binary = false).  Also, wouldn't it be better to bubble up the exception, rather than silently cutting it off?
Seems like the code should be something like:
  const { data } = message;
  if (message.binary) {
      const buffer = new Buffer(data, 'binary');
      rawMessage = JSON.parse(buffer.toString('utf-8'));
   } else {
      rawMessage = data;
   }

Thanks for reporting this. I agree there’s some tinkering that needs to be
done down here!
Will look into it.
On Thu 9 Nov 2017 at 21:05, Stephen Weatherford<EMAIL_ADDRESS>wrote:

When reading data from an Azure CosmosDB graph, where the data contains
non-ansi characters, e.g.:
{
"type": "vertex",
"properties": {
"text": [
{
"id": "a0a0eb9e-8679-4c80-a0e4-ea2e00a96b71",
"value": "RT @colisscom: [JS]このスクリプト一つで、さまざまな用途に合わせたスライダーが実装できて便利 -Tiny
Slider\n\nhttps://t.co/ObL6zbEAN4 https://t.co/J0KtrMAgor"
}
],
...
I'm seeing a lot of the data getting silently lost. The problem occurs
here in GremlinClient.js:
handleProtocolMessage(message) {
let rawMessage, requestId, statusCode, statusMessage;
try {
const { data } = message;
const buffer = new Buffer(data, 'binary'); <<<< message.data is a string,
and message.binary = false
rawMessage = JSON.parse(buffer.toString('utf-8'));
requestId = rawMessage.requestId;
statusCode = rawMessage.status.code;
statusMessage = rawMessage.status.message;
} catch (e) {
this.warn('MalformedResponse', 'Received malformed response message');
<<<< HITS HERE
return;
}
In this case the message is already a UTF-decoded string (message.binary =
false). Also, wouldn't it be better to bubble up the exception, rather than
silently cutting it off?
Seems like the code should be something like:
const { data } = message;
if (message.binary) {
const buffer = new Buffer(data, 'binary');
rawMessage = JSON.parse(buffer.toString('utf-8'));
} else {
rawMessage = data;
}
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/jbmusso/gremlin-javascript/issues/93, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AAMa1HqolAR38VKG52CgikXLDVL3kkz9ks5s01r5gaJpZM4QYknq
.

--
Jean-Baptiste

Thanks.  I'll submit a PR if I can get some time.  I'm temporarily working around it with this code:
// Patch up handleProtocolMessage as a temporary work-around for https://github.com/jbmusso/gremlin-javascript/issues/93
var originalHandleProtocolMessage = client.handleProtocolMessage;
client.handleProtocolMessage = function handleProtocolMessage(message) {
  if (!message.binary) {
    // originalHandleProtocolMessage isn't handling non-binary messages, so convert this one back to binary
    message.data = new Buffer(message.data);
    message.binary = true;
  }

  originalHandleProtocolMessage.call(this, message);
};


[DOC] I believe that the TCP/IP stack can use static allocations, contrary to a statement in the tutorial

Describe the issue
The page titled Adding the TCP/IP Source Files to an RTOS Project contains this statement

The application must be using the heap_4 or heap_5 memory allocator.

Further reading seems to suggest that this is only the case when using BufferAllocation_2.c. A page titled TCP/IP Stack Network Buffers Allocation Schemes explains that allocation scheme 1 uses static allocations and scheme 2 uses dynamic allocations.
I'm also left wondering precisely why heaps 1, 2 and 3 do not satisfy the requirements of BufferAllocation_2.c. I suppose this allocation scheme benefits from free-space coalescence, but that's a guess. It is possible that the above statement was written before there was the option of using static memory allocation, and is now out of date. This could suggest that the TCP/IP stack also does not strictly require free-space coalescence.
Could I ask that the documentation around this is revised?
Reference
Adding the TCP/IP Source Files to an RTOS Project
TCP/IP Stack Network Buffers Allocation Schemes
Screenshot
If applicable, please attach screenshot.
Browser

Browser: Firefox
Version: I don't know

@omarandlorraine Indeed. Dynamic allocation is currently required for FreeRTOS+TCP. Until this is addressed in the library, one alternative to a traditional heap allocator would be to use a memory-pool based allocator which can ensure that heap fragmentation does not occur.


Add id_token_hint to the post logout redirect uri

The OneLogin IdP  requires the id_token_hint field to be set to the previously issued access token in the end session uri to perform a logout and redirect the user to the post logout uri.[^1]
The Keycloak IdP requires the id_token_hint field to be set  to avoid a confirmation dialog before redirecting them to the post logout uri.[^2]
This PR adds the id_token_hint to support this behavior by the IdPs. I'm open to only enabling this through an option that is disabled by default.
[^1]: See #140 and https://developers.onelogin.com/openid-connect/api/logout
[^2]: See keycloak documentation: https://www.keycloak.org/docs/latest/securing_apps/#logout

Great work, thank you.

The tests fail because access_token is now called by encoded_post_logout_redirect_uri and this function calls client.access_token! if no access token has previously been fetched.
The tests do not mock this function and thus a request to example.com is made - expecting an access token but receiving HTML.
I don't know enough about stubbing in Ruby to stub this particular behavior.

@stanhu  can you review this PR or do I need to ask somebody else?

Hello everyone! Will this PR be merged at some point? Thanks for your work.

I would like this to be merged. Are there any concerns with this code? Need any help?

I also need to send id_token_hint, but this solution doesn't work for my client. I'm using authorization_code flow and the call to access_token fails with "invalid grant" because this flow requires that I send the authorization_code, which is supplied by params['code'] but that is not passed in the logout uri. I could send this code as a parameter, but that seems like overkill to require a fetch of the access_token just to allow logout. My application keeps track of the id_token, and I'd rather pass it as a parameter to the logout uri directly. I have a PR for this.

 Cognito uses different URL parameters (requiring client_id and logout_uri), see their documentation. Just a heads up! 😄


how can i fix  CanvasFreeDrawing is not a constructor

hi  i run the example file and  have this error  CanvasFreeDrawing is not a constructor. how can i fix it thank you.

Ok, I've been able to reproduce it, I'm gonna fix it soon! In the meantime you can use the module version that is working fine.

I've found that you could make it work just changing the class init to new CanvasFreeDrawing.default().
I'll update the example file to reflect the change, thank you for the bug report!


Add a time interval option in the JIT access request UI

As an enhancement, we would like the option to request the amount of time a user is given access to a certain role in JIT as part of the request.
We would like that to be an option in the JIT UI instead of an environment variable in the app.yaml.

I agree that this would be a useful feature. The ACTIVATION_TIMEOUT (in app.yaml) would then define an upper bound (for ex, 2h). Users could choose to activate a role for a shorter period of time (for ex, only 30min), but couldn't go beyond that upper bound.

This feature is now available in release 1.4: You can now choose the duration for which to activate a role, between 5 minutes and the maximum duration specified by ACTIVATION_TIMEOUT.

Could we log the duration for which the user has requested elevation?

The logs contain the start and end date in the activation_start and activation_end labels:

This (implicitly) gives you the duration. We could add an extra label for duration, but I guess it would be somewhat redundant?

I think I overlooked these entries. No need for an extra label. Thanks!


Reorganize sections to funnel users through application based

onboarding first, before doing system update demo.

Cherry-picked to 2.1.x also, after a few link fixes


Fix: Navbar not responsive

Signed-off-by: toth2000<EMAIL_ADDRESS>Description
This PR makes the navbar responsive on all devices.

This PR fixes #189
Notes for Reviewers
Signed commits

[x] Yes, I signed my commits.

@toth2000 let's discuss both your PRs on the websites' call tomorrow

@warunicorn19  For the logo and menu to be adjacent, the nav-list and menu icon need to be on a different div (otherwise current navbar issue persists). But if I try to put either the menu icon or nav-list on a different div the CSS styles don't get applied. I am not sure how to solve this, any help would be much appreciated.

Almost... there...

@toth2000 any success to report?

Sorry, I have been busy the past few weeks with my semester exams and offline classes. I tried to implement the suggested changes but still, it is not working. I think it will be better to assign this issue to someone who is really good with CSS.

@toth2000, no problem at all. I completely understand.

@toth2000, no problem at all. I completely understand.

@leecalcote can I give it a try?

@leecalcote can I give it a try?


bootstrap.css.map is missing in reactredux template

Use reactredux template.
Run it
Press F12 in browser (Edge for example)
Find 404 error: /dist/bootstrap.css.map

I suppose it something dramatic happens in webpack.config.js file
How to fix it?

I'm not sure why you have a bootstrap.css file, or why the browser would be looking for a bootstrap.css.map file, but neither of these occurs in the templates by default.
If you specifically want to add source maps for your CSS, please see webpack docs, e.g., https://github.com/webpack-contrib/css-loader#options. Hope that's OK!


Make mods public in lib.rs

There are mods like transactions, contract, account… which contain useful information to use for folks integrating. Real quick PR to make those public, since I saw this error:

You don't need that struct. It's intermediate builder. Use
Transaction::construct(..)

@akorchyn I would really love to have some useful entry point in the root of the crate and kill prelude. We only have a few structs, not a gazillion of them and no traits afaik. I'd love to open https://docs.rs/near-api/latest/near_api/ and see the menu similar to the one in near.cli.rs, so as a developer I can quickly identify my next step. Similar to https://docs.rs/near-api/latest/near_api/prelude/index.html, but maybe an even more slimmed-down one.

If you don't mind I would keep them private for now. Not sure if it's necessary.
But if you think that it might bring more value to have everything pub, I would love to hear that :)


Fix Architecture Diagram location and file name

Hi @bradystroud ,
https://github.com/SSWConsulting/SSW.Rules/blob/main/_docs/images/SSW Rule V2 architecture diagram.png

First read the email "Architecture Diagrams - Where to store it?" and wait for William's answer
Move the file to the agreed location (probably wiki) as per https://www.ssw.com.au/rules/architecture-diagram (Tip 8)
Fix the file name as per https://www.ssw.com.au/rules/how-to-name-sharepoint-documents
Fix the link to the Architecture Diagram on https://sswcom.sharepoint.com/SitePages/Internal-Projects.aspx

AB#61245

Just to update this issue, @william-liebenberg and @wicksipedia provided further information, but I have yet to find time to update the standards. Please wait for me to update the standard before continuing.
Email from myself to Matt W:

As per my conversation with Will, we agreed that the Azure DevOps wiki is the preferred location for architecture diagrams in Azure DevOps projects. However, he mentioned that you can edit the wiki in 2 ways: In the portal or via the repo. Will prefers the repo method because this keeps everything under 1 git instance instead of 2. Furthermore, he is then able to use local tools such as VS code to edit the wiki.

Is the GitHub in-portal wiki kept in a separate repo to the code?
Is there an option to edit the GitHub wiki via the main repo?
Which method and location do you prefer for storing the architecture diagram in GitHub?

Email from Matt W to me:

First thing to point out is that GitHub isn’t Azure DevOps (obvs).
It is setting itself up to be a e2e developer platform but to be open for extensibility partners (e.g. Issues in JIRA, Wiki in Contluence) and not fenced off like Azure DevOps.
Azure DevOps does provide a nice homogenous experience but had it’s limits too (in different areas).

Is the GitHub in-portal wiki kept in a separate repo to the code?
Is there an option to edit the GitHub wiki via the main repo?

Yes – There is a separate wiki.
You can add the wiki’s repo as a remote and then modify that but I wouldn’t recommend it as:
a)	It’s not editing via “the main repo”
b)	Cloning the wiki’s repo becomes a multi-step process
c)	You need to be careful that wiki files are pushed in their own commits e.g. not with the code files (in the “main repo”)(
See https://gist.github.com/yukoff/5220f33123de5e7e428db63ef7025e72
If editing in the “main repo” is a requirement then github-pages would be the way to go (unless you don’t want the documentation on a public site).
	3. Which method and location do you prefer for storing the architecture diagram in GitHub?
I think the question is bigger than just architecture diagrams and that how we handle diagrams shouldn’t influence the rest of the documentation.
There are pros/cons to keeping the documentation inside/outside the code base/wiki.
If you only keep very lean living documentation – keep it next to the code. Tthis means the docs are lo-fi (maybe just images) and you are relying on people to pull the code and open in VSCode to improve the fidelity (e.g. mermaid diagrams).
Otherwise store the documentation in a fuller fidelity platform eg:

GH Pages – but this would require customising the renderer to add things that aren’t in the GitHub Flavoured Markdown spec (more maintenance debt)
A wiki that can offer higher fidelity (not going to offer examples/recommendations because I have a love/hate relationship with Confluence).

As a minimum, I’d keep the docs that need to stay in sync with the code… with the code in the repo e.g.:

README
o	Description
o	Installation (F5 steps)
o	Should have links to the important places (or link to the wiki where the info is kept)
License
Code of conduct
Contributing (could be in the readme)
o	How to contribute
o	Coding conventions etc
Contributors
o	List people who have worked on the project – good for long term maintainability
Support
Security
Issue templates
PR templates

See https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file
https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates

@bradystroud this can now be actioned, refer to the rules  https://www.ssw.com.au/rules/architecture-diagram (tip 9) and https://www.ssw.com.au/rules/awesome-documentation


"Mods activated." -> Freeze/Crash

As soon as the "Mods activated." - Notification pops up, the GAME (not the console) freezes and sometimes the console even crashes. Using an unmodified copy of this rep..
Some ppl had similar bugs and suggested to change the console language to english(uk) and that worked, but just once.

Seems to be some kind of issue with Virtual linux installations, a real installation doesn't lead to this problem.


Use My Own Application

I would like to use my own application for personal purposes to control pancakebot.
I use Visual Studio C++.
I would like to communicate directly with the Pancake bot through Serial port or USB.
I need only simple commands such as move absolute, move relative, set velocity, stop.
What is the best way to do this?

Oh my, this is old.  You just need to generate GCode and transfer it to the PancakeBot via the SD Card.  To communicate via USB check out kreativperspektiv.com/pbfw that describes the steps you need to communicate to the controller.


Update instructions to install and develop the extension

Installation:

When released, this extension will be available from the Chrome Web Store.
For the moment, you have the option to either

Download the latest extension, or
To build from source

Download the latest version (recommended)
The latest version of the extension can be downloaded with the following URL: https://github.com/GoogleChromeLabs/form-troubleshooter/releases/latest/download/form-troubleshooter-extension.zip
Note that you can download specific versions using by visiting the releases page on GitHub and downloading the form-troubleshooter-extension.zip file.
Once you have downloaded the zip file, extract in your preferred location.
Building from source
Note that you will need to have Node.js 12 or later to build the extension.

Download the code or clone the  repo:git clone git@github.com:GoogleChromeLabs/form-troubleshooter.git
Install dependencies: npm install
Build the extension: npm run build

Development:

To develop and test the extension locally, first follow the steps to build from source.
Local web server
Run the local web server with Hot Module Reloading (HMR):
npm run dev

Open http://localhost:8080/.
Note that developing in this mode requires you to bring your own form data. This can be achieved by referencing one of the existing data files in the test-data folder using the data query string parameter:

http://localhost:8080/?data=/test-data/form-problems.json
http://localhost:8080/?data=/test-data/score.json
http://localhost:8080/?data=/test-data/shadow-dom.json

Or by loading a saved form file from the more menu in the top right of the popup.
Running tests
# one off test run
npm run test

# continuously watch for changes
npm run test:watch

Linting
Before contributing any code, make sure that code has been linted.
npm run lint

# reformat files automatically
npm run pretty

Note that these instructions won't tale effect until this PR is merged and a new release is created.
Also included in the PR is an optimization to overall bundle size by disabling esm output which was doubling the size of the extension.

@socsieng FYI I resolved a couple of minor conflicts.


terraform: 1.0.11 -> 1.1.0

Motivation for this change
This adds the latest Terraform release and updates terraform to point to that.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Duplicate of #149720

oops - sorry a quick search hasn't shown that for some reason.


Issue Editing Certain Data Types in Umbraco 7.2

Hi,
Again want to say think the product is really good, and because I am able to integrate the full build with my project/solution it makes identifying issues a lot easier :)
In my investigations I wanted to enable the multi category picker to allow more than one category to be selected.
There are two things I have identified:

The data type "uWebshop.MultiContentPickerCategories" does not read from the database, it only ever runs from the constructor (which does not contain values for minvalue and maxvalue), which means that it can never be updated to allow multiple selection, or any other filtering enhancements.

When I made two changes:

a) Modified the "MultiNodePickerPreValueEditor.cs" file and set the "ConvertDbToEditor" function to run the "base.ConvertDbToEditor" function instead of just returning the "defualtPreVals".
b) Modified "MultipleCategoryPicker.cs" file and added "MinValue" and "MaxValue" to the "DefaultPreValues" constructor (as the third and fourth parameter respectively).
This made the datatype read and write back out correctly, however the data type instance on the product for selecting multiple categories still only allowed the selection of 1.

The way I resolved this was to create a new data type of "Umbraco.MultiNodeTreePicker" with the same parameters as yours and, reassign this data type to the product template and it all works perfectly.
It may be that something else is being missed from the pass through to the base data type causing it not to behave correctly (or i did fix it and it was just my project still behaving funny).
But I thought I would give you all the details of what I have found during my investigations as a starting point.
Cheers,
Tony

What i did is to change all the datatypes that uses any kind of uWebshop.MultiNodePicker to the regular umbraco MultiNodePicker. Works like a charm everywhere so far :)


Please upload Model Zoo quickly,I can't wait to learn your work

thank you very much!

Hi @NARRZ ,
Thanks for your interests. We will release our code and models ASAP.


Fixed titlebar buttons placement after exiting fullscreen

Fixes #194

Note: I have not tested this on non-10.11 machines. I'll do that when I have access to my Yosemite mac on Sunday.

Just realized you based this off of the dead-end branch 10.11 and manually applied your patch to master. Next time please base your work on the master branch.


Gradle properties.versionCode not being used

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Issue Description
I was running into Google Api Error: apkNotificationMessageKeyUpgradeVersionConflict: APK specifies a version code that has already been used. and I couldn't work out why as I was using the following:
gradle(
      task: "assemble",
      build_type: "Release",
      project_dir: "./android",
      properties: {
        "versionName" => "2.0.0",
        "versionCode" => 200,
        "android.injected.signing.store.file" => "keystore.jks",
        "android.injected.signing.store.password" => ENV["FASTLANE_KEYSTORE_PASSWORD"],
        "android.injected.signing.key.alias" => "upload",
        "android.injected.signing.key.password" => ENV["FASTLANE_KEY_PASSWORD"]
      }
    )

and I could see in the output it was being passed in the command:
--------------------
[23:22:18]: --- Step: gradle ---
[23:22:18]: --------------------
[23:22:18]: $ /Users/alex/Projects/sml/android/gradlew assembleRelease -p ./android -PversionName=2.0.0 -PversionCode=200 ...

However this seems to be completely ignored, and the only value gradle would actually use for the apk sits inside app/build.gradle
android {
    compileSdkVersion 28
    defaultConfig {
        ...
        versionCode 1 << This will be used no matter what, if I delete this line I get a gradle error
        versionName "1.0"
        ...
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

***

Environment

✅ fastlane environment ✅
Stack

Key
Value

OS
10.14.6

Ruby
2.6.3

Bundler?
true

Git
git version 2.21.0 (Apple Git-122.2)

Installation Source
~/.rvm/gems/ruby-2.6.3/bin/fastlane

Host
Mac OS X 10.14.6 (18G1012)

Ruby Lib Dir
~/.rvm/rubies/ruby-2.6.3/lib

OpenSSL Version
OpenSSL 1.1.1d  10 Sep 2019

Is contained
false

Is homebrew
false

Is installed via Fabric.app
false

Xcode Path
/Applications/Xcode.app/Contents/Developer/

Xcode Version
11.2.1

System Locale

Variable
Value

LANG
en_GB.UTF-8
✅

LC_ALL
en_GB.UTF-8
✅

LANGUAGE

fastlane files:
`./fastlane/Fastfile`
fastlane_version "2.28.3"

default_platform :ios

platform :ios do
  before_all do
    ENV["SLACK_URL"] = "https://hooks.slack.com/services/***"
    setup_circle_ci
  end

  desc "Submit a new Beta Build to Apple TestFlight"
  lane :beta do
    # Automatically handle codesigning https://codesigning.guide
    match(type: "appstore")

    # Testflight needs different build number every time
    increment_build_number(
      xcodeproj: "ios/App/App.xcodeproj" ,
      build_number: ENV["CIRCLE_BUILD_NUM"] || 1
    )

    # Build the app
    gym(
      scheme: "App",
      workspace: "ios/App/App.xcworkspace",
    )

    # Upload to testflight
    pilot

    slack(
      message: "IOS: Successfully uploaded new Beta build to TestFlight"
    )
  end

  desc "Deploy a new version to the App Store"
  lane :release do
    # Automatically handle codesigning https://codesigning.guide
    match(type: "appstore", readonly: is_ci)

    app_version = load_json(json_path: "app-version.json")

    increment_version_number(version_number: app_version["version"])

    # Build the app
    gym(
      scheme: "App",
      workspace: "ios/App/App.xcworkspace",
    )

    # Upload to app store and submit for review
    deliver(force: false)

    slack(
      message: "IOS: Successfully submitted new update to App Store"
    )
  end

  error do |lane, exception|
    slack(
      message: exception.message,
      success: false
    )
  end
end

platform :android do
  before_all do
    ENV["SLACK_URL"] = "https://hooks.slack.com/services/***"
  end

  desc "Submit a new Beta Build to Google Play Store"
  lane :beta do
    app_version = load_json(json_path: "app-version.json")

    gradle(task: 'clean', project_dir: './android')

    gradle(
      task: "assemble",
      build_type: "Release",
      project_dir: "./android",
      properties: {
        "versionName" => "2.0.0",
        "versionCode" => 200,
        "android.injected.signing.store.file" => "keystore.jks",
        "android.injected.signing.store.password" => ENV["FASTLANE_KEYSTORE_PASSWORD"],
        "android.injected.signing.key.alias" => "upload",
        "android.injected.signing.key.password" => ENV["FASTLANE_KEY_PASSWORD"]
      }
    )

    supply(
      package_name: "**.**.**",
      track: "internal",
      skip_upload_images: true,
      skip_upload_screenshots: true
    )
  end

  error do |lane, exception|
    slack(
      message: exception.message,
      success: false
    )
  end
end

`./fastlane/Appfile`
app_identifier "**.**.**" # The bundle identifier of your app
apple_id "****" # Your Apple email address

team_id "JUAJ7692VV" # Developer Portal Team ID

# you can even provide different app identifiers, Apple IDs and team names per lane:
# More information: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Appfile.md

fastlane gems

Gem
Version
Update-Status

fastlane
2.135.2
✅ Up-To-Date

Loaded fastlane plugins:

Plugin
Version
Update-Status

fastlane-plugin-load_json
0.0.1
✅ Up-To-Date

Loaded gems

Gem
Version

did_you_mean
1.3.0

executable-hooks
1.6.0

bundler-unload
1.0.2

rubygems-bundler
1.4.5

bundler
2.0.2

CFPropertyList
3.0.1

public_suffix
2.0.5

addressable
2.7.0

atomos
0.1.3

babosa
1.0.3

claide
1.0.3

colored
1.2

colored2
3.1.2

highline
1.7.10

commander-fastlane
4.4.6

declarative
0.0.10

declarative-option
0.1.0

digest-crc
0.4.1

unf_ext
<IP_ADDRESS>

unf
0.1.4

domain_name
0.5.20190701

dotenv
2.7.5

emoji_regex
1.0.1

excon
0.68.0

multipart-post
2.0.0

faraday
0.17.0

http-cookie
1.0.3

faraday-cookie_jar
0.0.6

faraday_middleware
0.13.1

fastimage
2.1.7

gh_inspector
1.1.3

jwt
2.1.0

memoist
0.16.1

multi_json
1.14.1

os
1.0.1

signet
0.12.0

googleauth
0.6.7

httpclient
2.8.3

mime-types-data
3.2019.1009

mime-types
3.3

uber
0.1.0

representable
3.0.4

retriable
3.1.2

google-api-client
0.23.9

google-cloud-env
1.3.0

google-cloud-core
1.4.1

google-cloud-storage
1.16.0

json
2.2.0

mini_magick
4.9.5

multi_xml
0.6.0

plist
3.5.0

rubyzip
1.3.0

security
0.1.3

naturally
2.2.0

simctl
1.6.6

slack-notifier
2.3.2

terminal-notifier
2.0.0

unicode-display_width
1.6.0

terminal-table
1.8.0

tty-screen
0.7.0

tty-cursor
0.7.0

tty-spinner
0.9.1

word_wrap
1.0.0

nanaimo
0.2.6

xcodeproj
1.13.0

rouge
2.0.7

xcpretty
0.3.0

xcpretty-travis-formatter
1.0.0

fastlane-plugin-load_json
0.0.1

generated on: 2019-11-11

For now I have worked around this by using this plugin:
https://github.com/beplus/fastlane-plugin-versioning_android
gradle(task: 'clean', project_dir: './android')

    android_set_version_name(
      version_name: app_version["version"],
      gradle_file: "./android/app/build.gradle"
    )

    android_set_version_code(
      version_code: ENV["CIRCLE_BUILD_NUM"] || 20001,
      gradle_file: "./android/app/build.gradle"
    )

    gradle(
      task: "assemble",
      build_type: "Release",
      project_dir: "./android",
      properties: {
        "versionName" => app_version["version"],
        "versionCode" => ENV["CIRCLE_BUILD_NUM"] || 20001,
        "android.injected.signing.store.file" => "keystore.jks",
        "android.injected.signing.store.password" => ENV["FASTLANE_KEYSTORE_PASSWORD"],
        "android.injected.signing.key.alias" => "upload",
        "android.injected.signing.key.password" => ENV["FASTLANE_KEY_PASSWORD"]
      }
    )

I'll leave this issue open in case there is something glaring I'm missing that can be fixed without a plugin.

Do you think this is a problem in Fastlane? Because if we are sending the correct parameter to gradlew, there is not much we could do differently, right?


Xamarin

Would be awesome to have this same documentation targeted for Xamarin.iOS

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4e30d710-7de5-4043-47e4-2e18706a39de
Version Independent ID: 4b0d4868-b374-0ca7-f807-3bee87d3de98
Content: Push notifications to specific iOS devices using Azure Notification Hubs
Content Source: articles/notification-hubs/notification-hubs-ios-xplat-segmented-apns-push-notification.md
Service: notification-hubs
GitHub Login: @jwargo
Microsoft Alias: jowargo

@gtodd876 We're getting ready to do some refreshing on the SDK and samples. Also a complete refresh on the tutorials (mostly because of Google shutting down GCM this year). We'll see what we can do.
@BryanTrach-MSFT Can you please assign this to me? @spelluru do you think we can do this?

@jwargo - Yes. It's on my backlog. Thanks.

#please-close

any updates on Xamarin.iOS implementation for this? Thanks

@reassign:sethmanheim


Minimum system requirement for the tool?

While testing out the migration activity, we observed that the tool works fine when the asset count is low, but when it attempts to migrate more than 20+ assets, after 20–25 minutes, the tool fails with memory exceptions, and the CPU spikes to almost 90% at this time, flagged against cmd.
The tool is hosted on a VM with 8GB RAM configuration.

Hi @ManishKanwaria,
Sorry to hear about your problem.  we currently don't have a minimum system requirement published for this tool as it is dependent on your content, and also on the underlying tools it uses (FFmpeg and Shaka packager).  I'm wondering if you can provide the command line you were using and the logs from the tool so we can understand your situation better.
One thing that comes to mind regarding memory usage is that the tool has a parameter called --batch-size which enables parallel processing, if you used this parameter, then the memory usage will increase.  I'm not sure if you are using higher --batch-size or not.
cc @duggaraju, in case he can provide additional tips.

@ManishKanwaria Looking at your logs would be helpful (particularly exception stack traces).  What is the typical duration of the video you are trying to migrate? Also are these live or VOD?   How are you running the tool?  In Azure or locally on your machine?  Tracking the CPU or memory usage over time might be helpful too.

Hi @pohhsu @duggaraju , Thank you for taking the time to look at our issue. Most of our VOD assets are, on average, 6 GB. We were persistently getting the timeout issue captured in the tool logs; hence, we thought of upgrading to a 16GB Azure VM. After that, we did not face any issues, and we were successfully able to migrate all our test assets.
Thank you both :)

The issue turned out to be a disk read limit rather than CPU/memory issue. Where the OS disk is also used as temp space and becomes the bottle neck.


rm(network-latency): Removed duplicate network-latency experiment

Signed-off-by: shubhamchaudhary<EMAIL_ADDRESS>
Removed the network latency experiment as the corresponding experiment is moved to experiment and chaoslib to chaoslib. ED
Moved experiment flow README to network-chaos lib

@andreas131989 - we just moved your implementation/code into the litmus lib folders. Hope this is OK with you?


Create first rev of Origin Token

Determine where in repo to put token code
Choose base starting token code

Basically create a bare-bones ERC20 token.

You may want to take a look at https://github.com/knowledge/knowledge-contracts.
It's an upgradable ERC-20 token that follow current best practices for contracts development

Going to call this done, as the token discussion has moved way beyond this point.


MongoDB - Sink - PluginIdentifier not found

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
simple seatunnel configuration , designed to sink oracle to mongodb.
Oracle to postgres is working.
I added a new sink
	MongoDB {
		source_table_name = "source"
		uri = "mongodb://user:pwd@ipaddress:27017/dbname?readPreference=secondary&slaveOk=true"
		database = "dbname"
		collection = "destcollection"
		upsert-enable = true
		primary-key = ["pkname"]

	}

it ends with this exception.
Is related to mongodb java library, but which and where must it be installed.
I've done it but no solution I tried is working.
I tried with :
mongodb-driver-core-5.1.0
mongodb-java-driver-5.1.0

and as alternative:
mongodb-driver-sync-5.1.0

placing it into:
seatunnel_home\lib
plugins\MongoDB\lib
connectors\seatunnel
documentation link to the right download is failing.
SeaTunnel Version
2.3.4
SeaTunnel Config
#Also into the first attachment:

env {
	parallelism = 2
    job.mode=STREAMING
    job.name=SeaTunnel_Job
    read_limit.bytes_per_second=7000000
    read_limit.rows_per_second=400
}

  Oracle-CDC {

    result_table_name = "tab1"
    base-url = "jdbc:oracle:thin:user/password@ip:1521/service_name"
    source.reader.close.timeout = 120000
    username = "user"
    password = "password"
    database-names = ["DBNAME"]
	# real db name DBNAME.domain.local ( it works with DBNAME )
    schema-names = ["SCHEMA"]
    startup.mode = "INITIAL"
    table-names = ["DBNAME.SCHEMA.TABLE1"]
  }

}

sink {
	MongoDB {
		source_table_name = "source"
		uri = "mongodb://user:pwd@ipaddress:27017/dbname?readPreference=secondary&slaveOk=true"
		database = "dbname"
		collection = "destcollection"
		upsert-enable = true
		primary-key = ["pkname"]

	}

}

### Running Command

```shell
java -Dlog4j2.configurationFile=E:\programmi\apache-seatunnel-2.3.4\config\log4j2_client.properties -Dhazelcast.client.config=E:\programmi\apache-seatunnel-2.3.4\config\hazelcast-client.yaml -Dseatunnel.config=E:\programmi\apache-seatunnel-2.3.4\config\seatunnel.yaml -Dhazelcast.config=E:\programmi\apache-seatunnel-2.3.4\config\hazelcast.yaml -Dseatunnel.logs.file_name=seatunnel-starter-clienttest -Xms256m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E:\programmi\apache-seatunnel-2.3.4\dump\zeta-client  -cp E:\programmi\apache-seatunnel-2.3.4\lib\*;E:\programmi\apache-seatunnel-2.3.4\starter\seatunnel-starter.jar org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient  --config .\config\v2.batch.config.template -m local

Error Exception
2024-05-06 13:42:06,610 ERROR [o.a.s.c.s.SeaTunnel           ] [main] - Fatal Error,

2024-05-06 13:42:06,611 ERROR [o.a.s.c.s.SeaTunnel           ] [main] - Please submit bug report in https://github.com/apache/seatunnel/issues

2024-05-06 13:42:06,612 ERROR [o.a.s.c.s.SeaTunnel           ] [main] - Reason:SeaTunnel job executed failed

2024-05-06 13:42:06,614 ERROR [o.a.s.c.s.SeaTunnel           ] [main] - Exception StackTrace:org.apache.seatunnel.core.starter.exception.CommandExecuteException: SeaTunnel job executed failed
	at org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:199)
	at org.apache.seatunnel.core.starter.SeaTunnel.run(SeaTunnel.java:40)
	at org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient.main(SeaTunnelClient.java:34)
Caused by: java.lang.RuntimeException: Plugin PluginIdentifier{engineType='seatunnel', pluginType='sink', pluginName='MongoDB'} not found.
	at org.apache.seatunnel.plugin.discovery.AbstractPluginDiscovery.createPluginInstance(AbstractPluginDiscovery.java:231)
	at org.apache.seatunnel.engine.core.parse.ConnectorInstanceLoader.loadSinkInstance(ConnectorInstanceLoader.java:77)
	at org.apache.seatunnel.engine.core.parse.JobConfigParser.parseSink(JobConfigParser.java:194)
	at org.apache.seatunnel.engine.core.parse.JobConfigParser.parseSinks(JobConfigParser.java:170)
	at org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parseSink(MultipleTableJobConfigParser.java:531)
	at org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parse(MultipleTableJobConfigParser.java:193)
	at org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.getLogicalDag(ClientJobExecutionEnvironment.java:88)
	at org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.execute(ClientJobExecutionEnvironment.java:161)
	at org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:146)
	... 2 more

Zeta or Flink or Spark Version
Zeta
Java or Scala Version
JAva
Screenshots
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Could you try with 2.3.5. It should be fixed by #6551

Thanks
I will try that. ( with 2.3.4 connectors )
From where connectors 2.3.5 are available? Docs links are failing!
Alessandro
Il giorno gio 9 mag 2024 alle ore 05:44 Jia Fan @.***>
ha scritto:

Could you try with 2.3.5? It should be fixed by #6551
https://github.com/apache/seatunnel/pull/6551
—
Reply to this email directly, view it on GitHub
https://github.com/apache/seatunnel/issues/6800#issuecomment-2101877591,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AI2V56Z6AEJEY23ZCJHATVDZBLWJHAVCNFSM6AAAAABHI7W73CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMBRHA3TONJZGE
.
You are receiving this because you authored the thread.Message ID:
@.***>

You can get download link from https://www.apache.org/dyn/closer.lua/seatunnel/2.3.5/apache-seatunnel-2.3.5-bin.tar.gz

Again:
2024-05-09 08:16:48,437 ERROR [o.a.s.c.s.SeaTunnel           ] [main] -
Exception
StackTrace:org.apache.seatunnel.core.starter.exception.CommandExecuteException:
SeaTunnel job executed failed
at
org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:202)
at
org.apache.seatunnel.core.starter.SeaTunnel.run(SeaTunnel.java:40)
at
org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient.main(SeaTunnelClient.java:34)
Caused by: java.lang.RuntimeException: Plugin
PluginIdentifier{engineType='seatunnel', pluginType='sink',
pluginName='MongoDB'} not found.
at
org.apache.seatunnel.plugin.discovery.AbstractPluginDiscovery.createPluginInstance(AbstractPluginDiscovery.java:234)
at
org.apache.seatunnel.engine.core.parse.ConnectorInstanceLoader.loadSinkInstance(ConnectorInstanceLoader.java:77)
at
org.apache.seatunnel.engine.core.parse.JobConfigParser.parseSink(JobConfigParser.java:159)
at
org.apache.seatunnel.engine.core.parse.JobConfigParser.parseSinks(JobConfigParser.java:135)
at
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parseSink(MultipleTableJobConfigParser.java:517)
at
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parse(MultipleTableJobConfigParser.java:200)
at
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.getLogicalDag(ClientJobExecutionEnvironment.java:88)
at
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.execute(ClientJobExecutionEnvironment.java:156)
at
org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:149)
... 2 more
The point is, which jar is missing and where must be distributed.
since I'm using Zeta engine I should locate it into the seatunnel .\lib.
I added there the mongodb-driver-sync-5.1.0.jar.
Mongo db sink:
MongoDB {
source_table_name = "assignments"
uri = @.***
:27017/dbname?readPreference=secondary&slaveOk=true"
database = "dbname"
collection = "assignments"
upsert-enable = true
primary-key = ["w6key"]
}
thanks
Alessandro
Il giorno gio 9 mag 2024 alle ore 05:44 Jia Fan @.***>
ha scritto:

Could you try with 2.3.5? It should be fixed by #6551
https://github.com/apache/seatunnel/pull/6551
—
Reply to this email directly, view it on GitHub
https://github.com/apache/seatunnel/issues/6800#issuecomment-2101877591,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AI2V56Z6AEJEY23ZCJHATVDZBLWJHAVCNFSM6AAAAABHI7W73CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMBRHA3TONJZGE
.
You are receiving this because you authored the thread.Message ID:
@.***>

did you execute bin/install-plugin.sh ? https://seatunnel.apache.org/docs/2.3.5/start-v2/locally/deployment#step-3-install-connectors-plugin

Connectors are not available.
This is the install_plugin output:
[...]
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-dependency-plugin:2.8:get (default-cli) on
project standalone-pom: Couldn't download artifact: Missing:
[ERROR] ----------
[ERROR] 1) org.apache.seatunnel: connector-mongodb:jar:2.3.5
[ERROR]
[ERROR]   Try downloading the file manually from the project website.
[ERROR]
[ERROR]   Then, install it using the command:
[ERROR]       mvn install:install-file -DgroupId=org.apache.seatunnel
-DartifactId= connector-mongodb -Dversion=2.3.5 -Dpackaging=jar
-Dfile=/path/to/file
[ERROR]
[ERROR]   Alternatively, if you host your own repository you can deploy the
file there:
[ERROR]       mvn deploy:deploy-file -DgroupId=org.apache.seatunnel
-DartifactId= connector-mongodb -Dversion=2.3.5 -Dpackaging=jar
-Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR]   Path to dependency:
[ERROR]         1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR]         2) org.apache.seatunnel: connector-mongodb:jar:2.3.5
[ERROR]
[ERROR] ----------
[ERROR] 1 required artifact is missing.
[...]
also from seatunnel website connectos llinks are not working , it seems
connectors lib are no more available from the repository.
the url might be changed?
thanks
Alessandro
Il giorno gio 9 mag 2024 alle ore 10:15 Jia Fan @.***>
ha scritto:

did you execute bin/install-plugin.sh ?
https://seatunnel.apache.org/docs/2.3.5/start-v2/locally/deployment#step-3-install-connectors-plugin
—
Reply to this email directly, view it on GitHub
https://github.com/apache/seatunnel/issues/6800#issuecomment-2102178993,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AI2V564WR43ERTGBR7GP4HDZBMWDVAVCNFSM6AAAAABHI7W73CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMBSGE3TQOJZGM
.
You are receiving this because you authored the thread.Message ID:
@.***>

cc @liugddx

Hi Jia,
I resumed my seatunnel tests.
Still trying to sync mongo from oracle cdc.
Firstly as written apache seatunnel documentation is pointing to a wrong
maven repository.
In the end I found the connector component manually navigating
https://mvnrepository.com/artifact/org.apache.seatunnel.
The plugin installer is throwing an exception because the maven repository
is not available.
Documentation, related to manual installation, doesn't mention other
libraries needed mongodb-driver-sync-4.7.1 and mongodb-driver-core-4.7.1 as
requested from the connector manifes.
Btw this I achieved it.
Now I'm able to run the documentation example but not a real scenario ,
I've a big oracle table. I like to transform it into a document into a
mongo collection, to make it simple I applied a transformation in the
middle :
[...]
transform {
Sql {
source_table_name = "assignments"
result_table_name = "mongoassignments"
query = "select pkname from assignments"
}
}
[...]
MongoDB {
source_table_name = ["mongoassignments"]
uri = @.***:27017/?authSource=dbname"
database = "dbname"
collection = "assignmentskeys"
upsert-enable = true
primary-key = ["  pkname   "]
schema = {
  fields {
    _id = string
      pkname   = bigint
      }
}

}
but it throws such an error:
java: Caused by: com.mongodb.MongoBulkWriteException: Bulk write operation
error on server XXXXXX:27017. Write errors: [BulkWriteError{index=0,
code=2, message='$and/$or/$nor must be a nonempty array', details={}}].
any idea?
Do you think, might be possible to set up the denv env and try debugging it?
thanks a lot
Alessandro
Il giorno mer 15 mag 2024 alle ore 04:14 Jia Fan @.***>
ha scritto:

cc @liugddx https://github.com/liugddx
—
Reply to this email directly, view it on GitHub
https://github.com/apache/seatunnel/issues/6800#issuecomment-2111454976,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AI2V566DX2V2W52QBLOUQCTZCLAIJAVCNFSM6AAAAABHI7W73CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJRGQ2TIOJXGY
.
You are receiving this because you authored the thread.Message ID:
@.***>

Sorry...
I did! the basic transfer is working now, no help needed on this topic.
Sorry I disturbed you!
Is there a way to update a collection in order to perform a
dernomalization along the oracle to mongo sync?
Ale
Il giorno lun 24 giu 2024 alle ore 14:54 Alessandro Leonardi <
@.***> ha scritto:

Hi Jia,
I resumed my seatunnel tests.
Still trying to sync mongo from oracle cdc.
Firstly as written apache seatunnel documentation is pointing to a wrong
maven repository.
In the end I found the connector component manually navigating
https://mvnrepository.com/artifact/org.apache.seatunnel.
The plugin installer is throwing an exception because the maven repository
is not available.
Documentation, related to manual installation, doesn't mention other
libraries needed mongodb-driver-sync-4.7.1 and mongodb-driver-core-4.7.1 as
requested from the connector manifes.
Btw this I achieved it.
Now I'm able to run the documentation example but not a real scenario ,
I've a big oracle table. I like to transform it into a document into a
mongo collection, to make it simple I applied a transformation in the
middle :
[...]
transform {
Sql {
source_table_name = "assignments"
result_table_name = "mongoassignments"
query = "select pkname from assignments"
}
}
[...]
MongoDB {
source_table_name = ["mongoassignments"]
uri = @.***:27017/?authSource=dbname"
database = "dbname"
collection = "assignmentskeys"
upsert-enable = true
primary-key = ["  pkname   "]
schema = {
  fields {
    _id = string
      pkname   = bigint
      }
}

}
but it throws such an error:
java: Caused by: com.mongodb.MongoBulkWriteException: Bulk write operation
error on server XXXXXX:27017. Write errors: [BulkWriteError{index=0,
code=2, message='$and/$or/$nor must be a nonempty array', details={}}].
any idea?
Do you think, might be possible to set up the denv env and try debugging
it?
thanks a lot
Alessandro
Il giorno mer 15 mag 2024 alle ore 04:14 Jia Fan @.***>
ha scritto:

cc @liugddx https://github.com/liugddx
—
Reply to this email directly, view it on GitHub
https://github.com/apache/seatunnel/issues/6800#issuecomment-2111454976,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AI2V566DX2V2W52QBLOUQCTZCLAIJAVCNFSM6AAAAABHI7W73CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJRGQ2TIOJXGY
.
You are receiving this because you authored the thread.Message ID:
@.***>

Is there a way to update a collection in order to perform a dernomalization along the oracle to mongo sync?

not sure what you want, could you share some example?

yes,
source oracle, table A and B
destination mongodb, collection called AB where documents are created
embedding B into A  {A,{B}}
Is there a way to configure a sink in order to embed B into A?
Thanks a lot.
Alessandro
Il giorno mar 25 giu 2024 alle ore 04:16 Jia Fan @.***>
ha scritto:

Is there a way to update a collection in order to perform a
dernomalization along the oracle to mongo sync?
not sure what you want, could you share some example?
—
Reply to this email directly, view it on GitHub
https://github.com/apache/seatunnel/issues/6800#issuecomment-2187820246,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AI2V567IY727CZT5A3L5LNTZJDHGPAVCNFSM6AAAAABHI7W73CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOBXHAZDAMRUGY
.
You are receiving this because you authored the thread.Message ID:
@.***>

Sorry, seatunnel can not do this at now.

Thanks
Alessandro
Il giorno mar 25 giu 2024 alle ore 07:58 Jia Fan @.***>
ha scritto:

Sorry, seatunnel can not do this at now.
—
Reply to this email directly, view it on GitHub
https://github.com/apache/seatunnel/issues/6800#issuecomment-2188041020,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AI2V56ZSGO3XYN67GSLQTVDZJEBILAVCNFSM6AAAAABHI7W73CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOBYGA2DCMBSGA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Again, thank you for your kind response; I would also like to compliment
you!
You all have done a fantastic job; Seatunnel is an excellent tool for data
synchronization, a single scalable application to manage all sources and
destinations without additional components that increase the complexity of
configuration and maintenance.
Thanks
Ale
Il giorno mar 25 giu 2024 alle ore 07:58 Jia Fan @.***>
ha scritto:

Sorry, seatunnel can not do this at now.
—
Reply to this email directly, view it on GitHub
https://github.com/apache/seatunnel/issues/6800#issuecomment-2188041020,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AI2V56ZSGO3XYN67GSLQTVDZJEBILAVCNFSM6AAAAABHI7W73CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOBYGA2DCMBSGA
.
You are receiving this because you authored the thread.Message ID:
@.***>


Fix NN converter allocator

Pull Request Test Coverage Report for Build 858

2 of 6 (33.33%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.03%) to 80.041%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

lib/nn-syntax/tonn_converter.js
2
6
33.33%

Totals

Change from base Build 856:
-0.03%

Covered Lines:
8323

Relevant Lines:
10007

💛  - Coveralls


Parameter pattern constraint not parsed correctly

A parameter pattern constraint, e.g. pattern: "[abc]", that is, with a single pair of quotes around the regex, leads to the regex not being parsed correctly.
API specification
---
swagger: '2.0'
x-api-first-package: controllers
info:
  version: 0.0.0
  title: Simple API Test
paths:
  /{bippy}:
    get:
      parameters:
        - in: path
          name: bippy
          type: string
          pattern: [abc]
          # path parameter required as a workaround for issue 5
          required: true
      responses:
        200:
          description: bippy response
# model definition required as a workaround for issue 18
definitions:
  bop:
    properties:
      name:
        type: string

[info] Compiling 17 Scala sources and 1 Java source to /Users/marco/Code/play-swagger-test/target/scala-2.11/classes...
[error] /Users/marco/Code/play-swagger-test/target/scala-2.11/routes/main/validators/bippy.yaml.scala:26: illegal start of simple expression
[error]        pattern([abc]*.r)
[error]                ^

Wrapping the quoted regex in an additional pair of quotes, e.g.: pattern: '"[abc]"', provides a workaround for this issue.

Fixed in 0.1.7


Add safety video to Park in DUP

As a public DUP user, I want to easily see more info about a park so that I am prepared when I book a day pass.
This ticket is to add a section similar to “map link” to DUP that enables admin users to add a video link that public users can then click open to watch. Or embed a video within the page. The videos will link to adventure smart movies like this:
Golden Ears: AdventureSmart Trail Specific Safety Video - Golden Ears Summit Trail

Acceptance Criteria:

field in DUP admin is added to Edit Park that is called “Link to Video” where users can add a video link
when user clicks save this video saves to DB and link to video shows on public side of DUP
when video is added to a park the Public side of DUP shows "Park Video" and description text underneath reads “Learn how to prepare for your visit” then instead of a P symbol use a generic video symbol
This link on public only exists if an admin user has added a video to the park on the admin side
Video opens in a new tab/window

@Christopher-walsh22 this is a good next one to pick up to get you into frontend/backend work within DUP

Tested on TEST: Passed ✅

Verified that the field "Link to Video" is available on DUP Admin
Verified that if a link has been added, it is displayed on the DUP-public with the hard-coded description.
Verified that the link opens on a new tab

Ready for PO review.

working for me - moving to done and we can move to prod next week


chore: bump devDeps and fix tsconfig/rollup issues

Fixing latent rollup and tsconfig issues as discovered with @dagda1. Bump the remaining devDeps. Fix a few missing deps that were only working due to hoisting.

if all these rollup files are exactly the same then you could just have one and use the --config switch to all point to the same file

Hmm, interesting idea. The main covector one is currently the only different one. I think I would be tempted to just ditch rollup if I do any other big build changes though.


Layout: errors while using CSP and MOVE_SCRIPTS_TO_BOTTOM at the same time

Describe the bug
Thank you for fixing issues about CSP update on Primefer 13.0.2: https://github.com/primefaces/primefaces/issues/10658
After I updated the new version, I found that there are some errors if I using the CSP and MOVE_SCRIPTS_TO_BOTTOM at the same time.
In the test sample, we can see following errors on the console:

These errors is related to the input text component and command button component. The errors occur only when the component is inside < pe:layout>  component.
If we remove either CSP or MOVE_SCRIPTS_TO_BOTTOM from web.xml, the error would occur.
Reproduced sample:
primefaces-test.zip
Reproducer

Open the page: http://localhost:8080/primefaces-test/
Open the browser, then we can see the errors on console

Expected behavior
No errors on the console
PrimeFaces Extensions version
13.0.7
JSF implementation
Mojarra
JSF version
2.2
Browser(s)
Firefox 124.0.1

I will take a look thanks!  I use layout in production with CSP so I will check out what is going on.

OK well the issue is your InputText is the only script on the page not being moved to the bottom.
<script id="frmTest:j_idt8_s" type="text/javascript" nonce="YzM5MTQxMDEtOGZiNC00NDhlLWEwZTMtYWEwMGEyZGM5YTVi">PrimeFaces.cw("InputText","widget_frmTest_j_idt8",{id:"frmTest:j_idt8"});</script>

So that inline script runs for PrimeFaces createwidget even though PrimeFaces has not been initialized yet because all the scripts are at the bottom.
I think this is because the center panel gets delayed in rendering.  The showcase has the same setup but it does not seem to happen with the Showcase when I turn CSP on.  The only difference is I am using the GSON options for layout.
<pe:layout id="fpl" widgetVar="fullLayoutWidget" options="#{showcaseLayout.options}">

SO I wonder if using the GSON options is somehow different.

Yeah it looks like the Showcase works with CSP as does my production app because I configure my panels with options="#{showcaseLayout.options}" and not right in the panels...

Thank you.  We can use options attribute to workaround currently.

Report back when you have it all working @lih13800 . Much appreciated!

Thanks, after I added  options attribute those errors are not exist any more. It works well now.

Nice I will close this as "workaround provided" as I don't think I will ever be able to fix the core layout.js


The legend in scene doesn't display layers.

When a legend widget with legend panel was added to project, the legend don't display layers in scene panel. The layers  appear only in legend panel in map.

Sounds like a core JS issue. You might want to post something here:
https://geonet.esri.com/community/developers/web-developers/arcgis-api-for-javascript

Closing this is not a Calcite Maps issue.


propsData not initialized during mount

Hi,
While using your library, i noticed that props passed as options to mount by affecting to propsData is not passed to the component. I looked into your test-suite and it seems you also didn't really check it.
Here's the code in question:
  it('returns new VueWrapper with mounted Vue instance with props, if passed as propsData', () => {
    const prop1 = { test: 'TEST' }
    const wrapper = mount(Vue.extend(ComponentWithProps), { propsData: { prop1 }})
    if (wrapper.vm.$props) {
      expect(wrapper.vm.$props.prop1).to.equal(prop1)
    } else {
      expect(wrapper.vm.$options.propsData.prop1).to.equal(prop1)
    }
  })

This is weird because an if shouldn't exist in a test case, we shouldnt verify that it exists in options and thus it never tests the first case. The props are not initialized. Is it by design or is it a bug ?

You don't need to extend the component, just pass the component object:
const wrapper = mount(ComponentWithProps, { propsData: { prop1 }})

There isn't any checking in the code because the options are passed to the Vue instance when it's instantiated.

Your code looks a bit off in places, try this...
it('returns new VueWrapper with mounted Vue instance with props, if passed as propsData', () => {
    const prop1 = { test: 'TEST' }
    const wrapper = mount(ComponentWithProps, {propsData: prop1}) // you were passing an object in an object here.

    expect(wrapper.hasProp('test', 'TEST')).to.equal(true)  // use this helper for checking prop values
  })

Hi, thanks for the fast response.

Nevermind I checked into your code and in create-instance.js i modified this line
const Constructor = vue.extend(component)

to this
const Constructor = vue.extend(component.extend ? component.options : component)

so that it can support a vue.extend instance. Could you add it as a feature ?

Great  🙂
Yep sure, would you be able to make a PR?

#112 :)

This has been released in 1.0.0-beta.3, can you confirm it has fixed your issue?

I had the same issue recently.
I worked with vue-property-decorator and use @Prop decorator to marked props.
This may not because of vue-test-utils, but hope this message could help others reach here.
partial ts part of component likes:
@Component
export default class Hello extends Vue {
  @Prop({
    type: String
  })
  title
};

The propsData were not initialized if I called like below:
describe("Hello.vue", () => {
  it("renders props", () => {
    const wrapper = shallowMount(Hello, {
      propsData: { title: 'hello' }
    })
    // I cannot get the title from wrapper

  });
});

My workaround is add the props in options argument of shallowMount, like:
describe("Hello.vue", () => {
  it("renders props", () => {
    const wrapper = shallowMount(Hello, {
      props: {
        title: {
          type: String
        }
       }
      propsData: { title: 'hello' }
    })
    // I can get the title as 'hello' from wrapper now

  });
});


SMV contracts support

Added missed gas-related intrinsics and instructions (setgaslimit, buygas, gramtogas, gastogram, rawreserve).
CONFIGPARAM fixed (NULLSWAPIFNOT added).
For internal return messages added options to specify message flags and value.
Return messages with more than once cell size now are correctly splitted into cell chain.

Failing Tests (3):
Clang :: CodeGen/tvm/Piggybank.cpp
Clang :: CodeGen/tvm/Wallet.cpp
Clang :: CodeGen/tvm/contract-handle-test.cpp

Failing Tests (3):
Clang :: CodeGen/tvm/Piggybank.cpp
Clang :: CodeGen/tvm/Wallet.cpp
Clang :: CodeGen/tvm/contract-handle-test.cpp

Thanks, will investigate it.

Failing Tests (3):
Clang :: CodeGen/tvm/Piggybank.cpp
Clang :: CodeGen/tvm/Wallet.cpp
Clang :: CodeGen/tvm/contract-handle-test.cpp

Thanks, will investigate it.
Both commits (SMV + coroutines) combined in another PR:
https://github.com/tonlabs/TON-Compiler/pull/138
Tests are ok.


Add get_input method to players

Gets the raw motion packets/state coming in from the client within the current tick, normalizes them into a resulting float vector that will be applied to their in-game motion.
Detail: this vector should be before any status effects, entity attributes, or collisions have been applied, regardless of gamemode or whether the player is mounted or not. (ie. If the player ever presses WASD keys, the space bar, or crouch in creative/spectator, the method should return something)

Adding onto this,

An attribute for adjusting midair WASD input strength


Support for Inkscape SVG files

I'm creating an application that requires to load images in SVG format. Most of those images are created by Inkscape and it fails loading them.
Looking at the source code, I think the problem is that Inkscape's SVG files do not have the viewBox attribute.
import std/httpclient
import pixie/fileformats/svg

let
  client = newHttpClient()
  data = client.getContent("https://appimage.github.io/database/SonicLineup/icons/scalable/sonic-lineup-icon.svg")
  image = data.decodeSvg()

/home/cristobal/.../trial.nim(7) trial
/home/cristobal/.nimble/pkgs/pixie-4.1.0/pixie/fileformats/svg.nim(603) decodeSvg
Error: unhandled exception: Unable to load SVG [PixieError]
Error: execution of an external program failed: '/home/cristobal/.../trial '

That is correct no viewBox is what breaks this.
But that is not the only issue with the sonic-lineup-icon.svg SVG file. SVG can be quite complex... in fact they can contain JS/HTML inside them requiring a full browser to render. We don't plant to support such files. Most programs (unless you are a browser) use some sort of SVG-but-simpler version of SVG where only the common features are supported. This is what we do here.
Your svg file contains a ton of extra inkscape: parameters and tags.
Your file uses defs and marker which appear to be quite complex.
There are tons of other tags I have not seen before.
I don't think we will ever support the file you have sorry. There is just to much "fancy" there.
The vector tool we use - figma export much simpler SVG files. The SVG icons we find online are much simpler as well.

Have you tried using the PlainSVG feature?

The thing is that I download those SVG files at run-time, so I'd need to install inkscape to convert them to PlainSVG (?)
Maybe using another library to simplify them


(PDB-4599) Don't spam log with HTTP request received

In active installs, this makes the startup logs (especially migration
progress logs), nearly unreadable because the vast majority of the lines
are this message.
The 503 error code can also be found in the puppetdb_access.log to
monitor declined HTTP requests.

CLA signed by all contributors.


Alpha loss is inf or nan. : Tensor had NaN values

SAC agent returns NaN in a loss while executing:
loss_info = agent_learner.run(iterations=1)

It happens every time after the first iteration of training. Log:
[reverb/cc/client.cc:163] Sampler and server are owned by the same process (29021) so Table uniform_table is accessed directly without gRPC.
[reverb/cc/client.cc:163] Sampler and server are owned by the same process (29021) so Table uniform_table is accessed directly without gRPC.
[reverb/cc/client.cc:163] Sampler and server are owned by the same process (29021) so Table uniform_table is accessed directly without gRPC.
[reverb/cc/client.cc:163] Sampler and server are owned by the same process (29021) so Table uniform_table is accessed directly without gRPC.
[reverb/cc/client.cc:163] Sampler and server are owned by the same process (29021) so Table uniform_table is accessed directly without gRPC.
[reverb/cc/client.cc:163] Sampler and server are owned by the same process (29021) so Table uniform_table is accessed directly without gRPC.
Traceback (most recent call last):
  File "/home/mbed/Projects/rl-physnet/scripts/train_haptic_rl.py", line 171, in <module>
    loss_info = agent_learner.run(iterations=1)
  File "/home/mbed/anaconda3/envs/rl/lib/python3.8/site-packages/tf_agents/train/learner.py", line 246, in run
    loss_info = self._train(iterations, iterator, parallel_iterations)
  File "/home/mbed/anaconda3/envs/rl/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 885, in __call__
    result = self._call(*args, **kwds)
  File "/home/mbed/anaconda3/envs/rl/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 956, in _call
    return self._concrete_stateful_fn._call_flat(
  File "/home/mbed/anaconda3/envs/rl/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 1963, in _call_flat
    return self._build_call_outputs(self._inference_function.call(
  File "/home/mbed/anaconda3/envs/rl/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 591, in call
    outputs = execute.execute(
  File "/home/mbed/anaconda3/envs/rl/lib/python3.8/site-packages/tensorflow/python/eager/execute.py", line 59, in quick_execute
    tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
tensorflow.python.framework.errors_impl.InvalidArgumentError:  Alpha loss is inf or nan. : Tensor had NaN values
	 [[node CheckNumerics_2 (defined at /anaconda3/envs/rl/lib/python3.8/site-packages/tf_agents/agents/sac/sac_agent.py:348) ]] [Op:__inference__train_1881479]

Errors may have originated from an input operation.
Input Source operations connected to node CheckNumerics_2:
 CheckNumerics_1 (defined at /anaconda3/envs/rl/lib/python3.8/site-packages/tf_agents/agents/sac/sac_agent.py:337)
 mul_2 (defined at /anaconda3/envs/rl/lib/python3.8/site-packages/tf_agents/agents/sac/sac_agent.py:346)

Function call stack:
_train

[reverb/cc/platform/default/server.cc:84] Shutting down replay server
WARNING:absl:Writer-object deleted without calling .close explicitly.
[reverb/cc/writer.cc:382] Received error when closing the stream: [14] Socket closed

Process finished with exit code 1

Might be related: tensorflow/agents#574

Fixed by #4

Still exists.


thunderbird-unwrapped: 115.0 -> 115.0.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for thunderbird-unwrapped is: A full-featured e-mail client
meta.homepage for thunderbird-unwrapped is: https://thunderbird.net/
meta.changelog for thunderbird-unwrapped is: https://www.thunderbird.net/en-US/thunderbird/115.0.1/releasenotes/
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 115.0.1 with grep in /nix/store/9ach591ymvfz574h0084mslx8j1yk4xc-thunderbird-unwrapped-115.0.1
found 115.0.1 in filename of file in /nix/store/9ach591ymvfz574h0084mslx8j1yk4xc-thunderbird-unwrapped-115.0.1

Rebuild report (if merged into master) (click to expand)

3 total rebuild path(s)

3 package rebuild(s)

First fifty rebuilds by attrpath
thunderbird-unwrapped
thunderbirdPackages.thunderbird
thunderbirdPackages.thunderbird-115

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/9ach591ymvfz574h0084mslx8j1yk4xc-thunderbird-unwrapped-115.0.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A thunderbird-unwrapped https://github.com/r-ryantm/nixpkgs/archive/2a19ecf59f67462fe0e44aaf366fc0a6fd36b13a.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/9ach591ymvfz574h0084mslx8j1yk4xc-thunderbird-unwrapped-115.0.1
ls -la /nix/store/9ach591ymvfz574h0084mslx8j1yk4xc-thunderbird-unwrapped-115.0.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

thunderbird
thunderbird-unwrapped

Maintainer pings
cc @edolstra @lovesegfault @nbp @vcunat for testing.

No issues while using it, so far.


cant bind the host/port error

Hiii,
I have installed impress using npm install command. then i followed the steps given in configuration block of git. i changed the hosts.js and server.js according to them. But i used IP address in both files and not the domain name. I am getting the error cant bind host/port when i restart the server. Where am i going wrong? Please help...
I have apache install listening on 80 port. When apache and impress both are running, i get
server status:server is already running. On stopping the apache i get the above error.
Great work done by you guys!!! Really enjoyed on seeing this work. Keep it Up!!!

Take a look. The first image is when apache server is stopped.
Second one is apache server running.

Try sudo node server. Probably your account have no rights to use ports below 1024.

Yes that worked. How do you came to know this?

Tat Tvam Asi

Oh my god!!! You know vedas?

Aham Bramhasi!!!

أنا الحق
Sufi should know vedas! )
Any other node.js application will fail to bind on ports below 1024.
So you need to use su or sudo.
But if you install impress as a service it will work using system rights.

Intresting. I am impressed. I have sent you frend request on FB, please add me. Thanks for helping.

@saurabhghewari, by the way in linux you can allow node to bind on ports below 1024 with following command:
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/node

If your node is stored somewhere else, then replace /usr/bin/node with actual path to node executable.
So after executing this command you'll be able to run node on 80 port without sudo.

Yeah. One thing i like to mention here, running node with sudo command may cause system problems. I read in a blog. I will post the link once i found it.

@saurabhghewari you're correct. I've got a such situations in my practice, especially if there are not a lot of RAM on a server. In such situations (in my case it was on Amazon) node can eat up all memory and the system freezes and after reboot it will not event launch. Only restoring from whole system from backup image can help.

Thanks @SkeLLLa!!!


[qt5] MinGW build fixes

[x] Changes comply with the maintainer guide
[x] SHA512s are updated for each updated download
[x] The "supports" clause reflects platforms that may be fixed by this new version
[x] Any fixed CI baseline entries are removed from that file.
[x] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

How well did it build for you? I had two overcome two problems, and will send you a PR soon:

icu libs for x64-mingw-static (a general fix for this port),
redirect installation from installed to packages (specific to mingw builds on windows host).

@dg0yt, I am building x64-mingw-dynamic triplet. With my changes qt5-base[core] builds without errors and works fine. I have actually never tried the static builds.
I know about the redirection, one of my changes is to fix redirection (in qt_fix_makefile_install.cmake). Doesn't it work for you?

I know about the redirection, one of my changes is to fix redirection (in qt_fix_makefile_install.cmake). Doesn't it work for you?

No. The point is that I see the Makefiles generated with / path separators (on Windows host, building with mingw32-make from MSYS2), but the fixup is written for \ path separators. What is in your Makefiles?
I know that qt scripts change output if sh is in PATH. We need to handle both cases if you confirm that you see \.

What is in your Makefiles? I know that qt scripts change output if sh is in PATH. We need to handle both cases if you confirm that you see \.

Mine are with \ indeed!
I am using this MinGW: https://github.com/niXman/mingw-builds-binaries/releases/tag/12.2.0-rt_v10-rev0

You are using a mingw toolchain with less extra tools. mingw32-make is for this.
With MSYS2, I use a more complete unixish enviroment. vcpkg already uses msys2 to provide such an environment for building ports based on the autotools build system, using make. I would prefer to use the same make environment for qt5, to limit variations. We download these packages anyways. But first I want to test if I see a significant difference in build time.

I would prefer to use the same make environment for qt5, to limit variations. We download these packages anyways.

Ok, I don't mind as long as msys2's make works with niXman compiler. Please, let me know if I can help with something so that Qt 5 MinGW support gets merged sooner.

The remaing issue is a little bit tricky, but a serious source of trouble which we must resolve:

Qt's configure.bat calls mingw32-make.
When sh is present, Qt generates unixish makefiles with /.
This behaviour is related to mingw32-make which uses sh instead of cmd if present.

I can control all this towards mingw32-make with \separators. But then then there is the next surprise:

Qt wants to run a perl script which wants to read from a command which uses < for input...
Now if msys (unixish) perl is in the PATH, it wants to run msys sh ... and in this step, the path separators hit the wall again.

So the alternatives are:

accept both msys and non-msys environments, modify install location accordingly,
force \ separators and non-msys perl.
force / separators and msys build.

I haven't used msys gcc to build Qt, can you please clarify the following for me to understand better:

When sh is present, Qt generates unixish makefiles with /.

Vcpkg itself does not put sh in path, right? So sh will be present if the user has sh in path beforehand, for example if the user uses msys gcc to build Qt, correct?

I can control all this towards mingw32-make with \separators.

How can you do this? How will you remove sh from path?

Now if msys (unixish) perl is in the PATH, it wants to run msys sh ... and in this step, the path separators hit the wall again.

Again - Vcpkg itself does not put msys perl in path, i.e. msys perl could be in path only if the user has it beforehand, right?

So the alternatives are:

accept both msys and non-msys environments, modify install location accordingly,

Maybe this won't be that difficult. It won't hurt if we try to replace both variants. Only one will get actually replaced.

force \ separators and non-msys perl.

I am not sure if this variant is possible at all, see above questions. How can you (selectively) remove msys sh and perl from path...

force / separators and msys build.

Maybe this will be ok too - if Vcpkg itself, intentionally, puts msys sh and perl in path.

@FrankXie05 Ready for review.