Multithread tile rendering

Improvements of this PR were discussed on
https://github.com/moagrius/TileView/issues/250

So I've had a quick look and I'd say this looks really good.  There are a couple questions and fine points, but I'm excited to get this included.  Will start line comments now.

ah i just saw @peterLaurence has started - @peterLaurence let me know when you're done and I'll start, so we don't bump into each other.
thanks both

@moagrius
Oups sorry. I am done :)

@bnsantos i think that's it from me.  despite the number of comments, i really like this update.  i'm not as familiar with the multithreading as i should be so i'm glad someone who is was able to write this.
@peterLaurence feel free to weigh in on any of my comments, and thanks for helping

@moagrius and @peterLaurence
I believe I did all the changes required. If I skipped one please let me know

@bnsantos just one last thing (the singleton idiom) and +1 from me

looks great, thank you.  +1 from me.  @peterLaurence are you +1?  if so I'll merge and generate artifacts for jcenter in about 2 hours (after lunch and scrum).
thanks again @bnsantos

+1 too

awesome, merging

thanks guys!

thank you!  working on getting artifacts up to bintray and bumping version, will do as soon as i get a second to breathe

@bnsantos i merged and pulled down master to test and generate artifacts.  a couple things, most important: i'm getting java.io.InterruptedIOException pretty regularly (and improperly drawn bitmaps) on the new demo.  are you seeing that?  also, it appears to run from top left to bottom right, in order, which implies to me that the blocking queue is blocking until the previous task is done...  i remember in the previous version they appeared kind of randomly, which meant to me that they appeared as soon as they were done downloading, so truly parallel...  am i misunderstanding anything, or did we lose (effective) parallelism with the blocking queue?

I'm seeing a lot of java.io.InterruptedIOException but this is because of a shitty implementation of BitmapHttpProvider. That happens whenever you pan waits is load a little bit and pan again then it will interrupt the executing Thread and then it throws java.io.InterruptedIOException.
The thread can be executed in any order (they're queued from 0_0 to row_col), I would say it's just coincidence that the tiles loaded pretty much like it was sequentially (top left to bottom right).
The ThreadPoolExecutor can render more than one tile at the same time if so you could see a pattern of two tiles being loaded pretty much at the same time. Or sometimes one tile still loading between them. Or even some weird scenario.
I'll take a look into the wrong bitmap loading.

I'm seeing a lot of java.io.InterruptedIOException but this is because of a shitty implementation of BitmapHttpProvider. That happens whenever you pan waits is load a little bit and pan again then it will interrupt the executing Thread and then it throws java.io.InterruptedIOException.

hopefully we can get that fixed before publishing

The thread can be executed in any order (they're queued from 0_0 to row_col), I would say it's just coincidence that the tiles loaded pretty much like it was sequentially (top left to bottom right).

The ThreadPoolExecutor can render more than one tile at the same time if so you could see a pattern of two tiles being loaded pretty much at the same time. Or sometimes one tile still loading between them. Or even some weird scenario.

GTK.  i remember you'd done a video at one point that showed the difference in render times - do you feel like we're still getting all the benefits of that version?

I'll take a look into the wrong bitmap loading.

cool, thanks.  fwiw, it's not the wrong bitmap, it's just a "blank" (it has pixels, but generally all white) - maybe the connection is dropped before it's fully decoded, but it's still reporting as successful?
here's some stacktrace that might be helpful:
02-16 15:09:16.474 19490-19600/tileview.demo D/skia: ---- read threw an exception
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at com.android.okio.RealBufferedSource.read(RealBufferedSource.java:48)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.read(HttpConnection.java:442)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at com.android.okio.RealBufferedSource$1.read(RealBufferedSource.java:168)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:635)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:611)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at tileview.demo.provider.BitmapHttpProvider.getBitmap(BitmapHttpProvider.java:35)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at com.qozix.tileview.tiles.Tile.generateBitmap(Tile.java:136)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at com.qozix.tileview.tiles.TileCanvasViewGroup.generateTileBitmap(TileCanvasViewGroup.java:255)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at com.qozix.tileview.tiles.TileRenderPoolExecutor$TileRenderRunnable.run(TileRenderPoolExecutor.java:77)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
02-16 15:09:16.474 19490-19597/tileview.demo W/System.err:     at java.lang.Thread.run(Thread.java:818)
02-16 15:09:16.474 19490-19597/tileview.demo D/skia: ---- read threw an exception
02-16 15:09:16.486 19490-19505/tileview.demo I/art: Background partial concurrent mark sweep GC freed 14805(717KB) AllocSpace objects, 201(20MB) LOS objects, 29% free, 37MB/53MB, paused 9.933ms total 52.119ms
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err: java.io.InterruptedIOException
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at com.android.okio.Deadline.throwIfReached(Deadline.java:56)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at com.android.okio.Okio$2.read(Okio.java:110)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at com.android.okio.RealBufferedSource.read(RealBufferedSource.java:48)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.read(HttpConnection.java:442)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at com.android.okio.RealBufferedSource$1.read(RealBufferedSource.java:168)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:635)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:611)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at tileview.demo.provider.BitmapHttpProvider.getBitmap(BitmapHttpProvider.java:35)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at com.qozix.tileview.tiles.Tile.generateBitmap(Tile.java:136)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at com.qozix.tileview.tiles.TileCanvasViewGroup.generateTileBitmap(TileCanvasViewGroup.java:255)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at com.qozix.tileview.tiles.TileRenderPoolExecutor$TileRenderRunnable.run(TileRenderPoolExecutor.java:77)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
02-16 15:09:16.537 19490-19598/tileview.demo W/System.err:     at java.lang.Thread.run(Thread.java:818)
02-16 15:09:16.537 19490-19598/tileview.demo D/skia: ---- read threw an exception

also fwiw i'm running in the genymotion emulator, on a virtual Nexus 6 with 5.0

The fact that it renders from top left to bottom right is not necessarily a sign that there no parallelism.
Threads are not launched all in the same time. The first to be launched loads the top left tile, and the last one has the bottom right tile. IF the server response is always the same, and given that when a thread post runable to render its tile as soon as it has finished to download it, we observe that.

@peterLaurence i understand and agree.  i was pointing it out mostly because bruno's contribution to version 1, on my particular setup, was very obviously not in order - the tiles appeared in what looked like (but of course was not really) random fashion.
that said, i know that's not necessarily the case, and it's possible that they appear to load in order: the videos he posted for comparison Tile Loading v1 - MultiThread, Tile Loading v2 - SingleThread also show that the multithreaded version is roughly in order.
tl;dr - all good :)

@moagrius
Yes indeed that example shows how much multi-thread speeds up!

yep :)

@moagrius
So, while checking the tiles not being loaded (I'm able to reproduce it) I found out another issue.   This happens because the TileRenderHandler is just calling tileCanvasViewGroup.renderTiles() no matter what is in the message.

@bnsantos
Hum.. on top of my head this reminds me that in mRenderPostExecuteRunnable we call :
invalidate();
requestRender();

So that create an infinite loop of render requests (which is not a big deal because we don't render if DetailLevel.computeCurrentState returns false in beginRenderTask). But maybe that can explain what you're seing.

hm is this new, since the threading PR merge?

@bnsantos
Can you tell me in what scenario you see some tiles not being updated?
Because i already know one. And the fix is not yet integrated.

@peterLaurence fwiw i always get "incomplete" (white) tiles on the new http demo

@peterLaurence
The tiles are being rendered after leaving the activity. You can see the print of memory usage

The first step is opening the app, second entering the Real Map Activity and the last one leaving the activity. I'm not sure if this is an issue that just appear on MultiThread or not. I'll check that later after solving the white tiles issue.
My guess about the white tiles is that the ThreadPoolExecutor kills those threads after 1 second idle waiting internet. This is why we can see a lot of  InterruptedException in the logs.  Because the BitmapHttpProvider prints them and BitmapProviderAssets doesn't. The same behavior can be achieved in BitmapProviderAssets if you add a Thread.sleep(500); then some threads will be killed but I'm not able to see where the white tile is.
@moagrius
can you clarify my about the TileCanvasViewGroup.onRenderTaskCancelled() this is called whenever the whole render (all tiles) is cancelled? If so what happen when one single tile is cancelled (due to InterruptedException) is there a method to be called? How the loader of the image on screen is going to know that the tile bitmap was not properly rendered???

can you clarify my about the TileCanvasViewGroup.onRenderTaskCancelled() this is called whenever the whole render (all tiles) is cancelled? If so what happen when one single tile is cancelled (due to InterruptedException) is there a method to be called? How the loader of the image on screen is going to know that the tile bitmap was not properly rendered???

i can only speak to how i was doing it before this most recent PR.  onRenderTaskCancelled is cancelled when the AysncTask is cancelled - in fact it's just a statement within the override AsyncTask.onCancelled method (https://github.com/moagrius/TileView/blob/1a8dcc98fa8c67dc97b70862d1a459a2b715fd9c/tileview/src/main/java/com/qozix/tileview/tiles/TileCanvasViewGroup.java#L392), so the exact mechanics are behind the scenes.
There was no special mechanism in place for handling a partially decoded image.  In the doInBackground method of the AsyncTask, i ran a loop that first checked if the task was cancelled - if so, stop everything - otherwise decode the tile and push the bitmap back to the UI thread with AsyncTask.publishProgress where again we check if the task was cancelled, and if not cancelled, the now-populated tile (with the bitmap) was passed to tileCanvasViewGroup.addTileToCurrentTileCanvasView.  This is all in the TileRenderTask definition: https://github.com/moagrius/TileView/blob/1a8dcc98fa8c67dc97b70862d1a459a2b715fd9c/tileview/src/main/java/com/qozix/tileview/tiles/TileCanvasViewGroup.java#L327
does that answer your question?

@bnsantos @moagrius
I can confirm that i could reproduce the third step of memory allocation with the former version of TileView. I don't know if it's a real issue because then i paused and resume the demo app several times and the amount of memory used by the app was stable.

i'd suggest we separate these issues - leave the destroy issue for after the threading issue.  that said, if you think that this is something more easily handled together, by all means go for it.

I have something new. My repo version of Bruno when i checked his new hhtp demo was at commit 11b4baf8ffa04f0156013ae66ac08f9cbc336329. It worked very well, and my repo did not change since then.
But now with the same app version i get no tiles (all blank screen).

maybe github is metering the raw image downloads?
@bnsantos do you think you'll have a working copy fairly soon, or should i revert for now?

@moagrius I wasn't clear. I was talking about the TileView demo, the real android app!

@peterLaurence yikes!  gtk

@moagrius
Thanks for your explanation of the TileCanvasViewGroup.onRenderTaskCancelled(). I was calling it if a single tile was canceled. I'm still working in the white Tiles not sure exactly what's happening but I'll need more time for sure
Now regarding the destroy I was not able to reproduce it in the previous version. This could be a simple demo issue or a lib issue that it is rendering tiles on destroy call. I agree that we should separate those issues and try to fix on at a time

@bnsantos cool, sounds good.  if after the threading issue is resolved, the destroy issue is still present, i'll create another issue and we can tackle it separately.  thanks

Found the culprit! Commenting out :
for ( Future f : mFutureList ) {
  if( !f.isDone() ){
    f.cancel( true );
    }
}

in TileRenderPoolExecutor.cancel solves the issue. Now, let's think about what we should have done...

Found the culprit! Commenting-out :
for ( Future f : mFutureList ) {
  if( !f.isDone() ){
    f.cancel( true );
  }
}

in TileRenderPoolExecutor.cancel solves the issue. Now its blazing fast!

@peterLaurence
I don't believe the culprit is on this part of the code. The "working" version I have changing the Tile
  boolean draw( Canvas canvas ) {
    if( mBitmap != null ) {
      canvas.drawBitmap( mBitmap, mLeft, mTop, getPaint() );
      return getIsDirty();
    }else {
      return true;
    }
  }

Those Http requests can be cancelled in so many different situations (if they exceed the keep alive time from ThreadPoolExecutor which is 1s for instance) and when they're cancelled the Runnable does not know that the BitmapProvider failed and the mBitmap is null. That's why this validations on Tile.drawis going to force the upper layer to re-render.
I believe that this is a fault in the architecture of the lib. Because it was planned to work on tiles that are inside the APK. If the files are not in the APK we can't assume that the BitmapProvider is going to be able to render all tiles.
Also there are some changes in TileRenderPoolExecutorbecause it was calling TileCanvasViewGroup.onRenderTaskCancelled if a single tile failed or was interrupted.
But I'm not sure that this is a proper solution or even if it is the solution. Since it is multi thread is hard to reproduce the errors in an easy repeatable pattern. I would like you to keep working on your version so we can discuss later which one achieved the best fix for this issue.
Thanks

@peterLaurence
in your test can you please add
Thread.sleep(400); inside your BitmapHttpProvider right below line 32 and just tell me the results?

@bnsantos the result : tiles are much slower to display. But they all do. No InterruptedException.

So could be the mFutureList think. The whole deal of the Future is to be able to kind of cancel the running thread, for instance if a Tile is being downloaded and you pan or zoom then we can cancel the download and do not have to wait it download and render on screen to start rendering new tiles.
My version seems to be working, I'll keep testing it and try to have a better understanding on the Future think. Thanks @peterLaurence

Yes i understand that the purpose of cancelling futures is to cancel ongoing downloads, thus we avoid necessary downloads. That should be ok. But the fact disabling this functionality "solves" the issue is not good at all.
We should definitely understand what's going on.

@moagrius
Let's say a Tile bitmap was not rendered and the mBitmap is still null is this a proper solution
  boolean draw( Canvas canvas ) {
    if( mBitmap != null ) {
      canvas.drawBitmap( mBitmap, mLeft, mTop, getPaint() );
      return getIsDirty();
    }else {
      return true;
    }
  }

so the parent will check that the tile was not loaded and then going to put the tile on tiles to render again?

@bnsantos
Thinking about what you've done, i will sum up here what i understand of what happens. When we pan, a bunch of tiles are requested to render. But during the pan another request cause the pending render task to be canceled and the new one gets the updated list of tiles to render. Then, all the threads that have just been cancelled may have a null bitmap. Btw, i don't undertand why because we should be protected against that. By tagging the Tile dirty when the bitmap is null, you use the existing mechanism that invalidates the TileCanvasView until there is no dirty tile left. After that, it calls TileCanvasViewGroup.cleanup().
So unless i am missing something, this does not mark the tile to be rendered again.
Apart from that, i don't believe that cancelling the existing futures when a new bunch tile is requested to render is a good solution. Be cause the new tiles to render may include some for which we have already created a thread to render. We should instead make a check and and create threads if necessary.

Let's say a Tile bitmap was not rendered and the mBitmap is still null is this a proper solution...  so the parent will check that the tile was not loaded and then going to put the tile on tiles to render again?

probably not going to work.  here's basically what happens (in psuedo-code) :
boolean isDirty = false;
for( Tile tile : tilesToBeRendered ) {
  isDirty = tile.draw( canvas );
}
if( isDirty ) {
  parentViewGroup.invalidate();
}

it's just checking if we need to call invalidate on the parent or not.

@moagrius we're on the same page :)

This time i think i got the root cause. I added this log in TileCanvasViewGroup:
void addTileToCurrentTileCanvasView( final Tile tile ) {
  if (tile.getBitmap() == null){
    System.out.println("Et voilà!!");
  }
  mTileRenderHandler.post( new PrepareTileForRenderRunnable( tile ) );
}

So it is possible to have a thread calling tileCanvasViewGroup.addTileToCurrentTileCanvasView( tile ) with a null BitMap. Unfortunately, this cause the launch of our PrepareTileForRenderRunnable which in turn adds the list to the tiles that we consider to have been rendered. This is due to mTilesAlreadyRendered.add( tile ) in TileCanvasViewGroup.prepareTileForRender. Subsequent request render won't request this tile to be rendered until a proper cleanup happens.

So what about :
void addTileToCurrentTileCanvasView( final Tile tile ) {
  if (tile.getBitmap() != null){
    mTileRenderHandler.post(new PrepareTileForRenderRunnable(tile));
  }
}

or in the executor :
if ( tile.getBitmap() != null ) {
  tileCanvasViewGroup.addTileToCurrentTileCanvasView(tile);
}

@peterLaurence i believe i'm following.  i'd say the second option seems more reasonable.
also, i see this:
if( !tileCanvasViewGroup.getRenderIsCancelled() && tile != null ){
  tileCanvasViewGroup.generateTileBitmap( tile );
  if ( thread.isInterrupted() ){
    tileCanvasViewGroup.onRenderTaskCancelled();
    return;
  }
  tileCanvasViewGroup.addTileToCurrentTileCanvasView( tile );
}

So tileCanvasViewGroup.generateTileBitmap( tile ); might take a very long time (e.g., a network request).  We should be testing cancelled again here.  Combining that, and your second option, what about something like:
if( !tileCanvasViewGroup.getRenderIsCancelled() && tile != null ){
  tileCanvasViewGroup.generateTileBitmap( tile );
  if ( thread.isInterrupted() ){
    tileCanvasViewGroup.onRenderTaskCancelled();
    return;
  }
  if( !tileCanvasViewGroup.getRenderIsCancelled() && tile.getBitmap() != null ) {
    tileCanvasViewGroup.addTileToCurrentTileCanvasView( tile );
  }
}

@moagrius Tested. It works :)

nice!  what's next?  a new PR?  @bnsantos do you want to handle this differently, e.g., i roll back, you integrate fixes, continue whatever else you're working on, and start over?  i'm open to any suggestion, both

Hey Guys,
Thinking more about the solution I proposed last night I really believe it's not a nice way to do it because we can generate overhead in the parent going through all the tiles and drawing them again in the screen. I believe that in order to solve this issue we can have two options:

Make parent check for null bitmaps and render only the ones that are null if they're being displayed in screen
Add the thread to render the tile again in the ThreadPoolExecutor

So I really liked the solution proposed by @peterLaurence ( which is kind 2). @moagrius regarding your comment on this part of the code
if( !tileCanvasViewGroup.getRenderIsCancelled() && tile != null ){
  tileCanvasViewGroup.generateTileBitmap( tile );
  if ( thread.isInterrupted() ){
    tileCanvasViewGroup.onRenderTaskCancelled();
    return;
  }
  tileCanvasViewGroup.addTileToCurrentTileCanvasView( tile );
}

I need to refactor a lot of this, because it is not supposed to call tileCanvasViewGroup.onRenderTaskCancelled() if a single tile gets interrupted or some other exception. This method should only be called when the whole rendering (of all tiles) is cancelled.
I'll do this validation inside ThreadPoolExecutor
if( !tileCanvasViewGroup.getRenderIsCancelled() && tile.getBitmap() != null ) {
    tileCanvasViewGroup.addTileToCurrentTileCanvasView( tile );
  }

And not in the TileCanvasViewGroup. If after testing it is ok I'll do a new PR

I need to refactor a lot of this, because it is not supposed to call tileCanvasViewGroup.onRenderTaskCancelled() if a single tile gets interrupted or some other exception. This method should only be called when the whole rendering (of all tiles) is cancelled.

Indeed. Even if TileView.onRenderTaskCancelled() currently does nothing, that should be addressed. We missed that!

@moagrius do you want a PR on master or in any other branch?

@bnsantos it is 7:30 AM in Texas. So unless Mike gets up early, you may just PR on master :)

i'm an early riser!  @bnsantos if you feel confident that your most recent update is solid, then let's go ahead and PR on master.  if you feel like we'll probably need more time, testing and changes, then PR on another branch, and let me know so I can roll back my master as well.
thank you!

Ok let's do it on master!


Right-click to Show File Info on IFS files from IFS Browser

Just to be able to see all the standard IFS attributes.
Could even trigger one of the CL commands to show the output of DSPATR or whatever Cl command shows file attributes.

Our new UI tools might be able to do this.

I am not sure there is an easy way to get information about a streamfile from an outfile or somewhere in the database.
Any ideas @richardschoen? I personally don't want to parse the output of DSPATR.

The magic of SQL: https://www.ibm.com/support/pages/retrieving-information-about-objects-ifs

@worksofliam You mentioned that the new UI tools are able to do this. What's the progress on this? Can this issue be solve by community?

@szsascha Of course.
I personally don't know the answer to this issue. VS Code doesn't even have a way to view information about files, so I'm open to ideas on how this should work.

@worksofliam
I could imagine that it is possible to display file attributes like the fields are listed in the database browser. So each object (ifs or i) could be an "expandable" entry. This would also open a possibility to change object attributes.

Not possible with the regular explorer, and therefore will not try to add something for IBM i. Not sure what the UI would look like.

Here’s something could use as a template.
All my other IFS explorer tools support it.
https://marketplace.visualstudio.com/items?itemName=brunnerh.file-properties-viewer
Regards
Richard Schoen

From: barry @.>
Sent: Friday, March 25, 2022 11:48:29 AM
To: halcyon-tech/vscode-ibmi @.>
Cc: Richard Schoen @.>; Mention @.>
Subject: Re: [halcyon-tech/vscode-ibmi] Right-click to Show File Info on IFS files from IFS Browser (#47)
Not possible with the regular explorer, and therefore will not try to add something for IBM i. Not sure what the UI would look like.
—
Reply to this email directly, view it on GitHubhttps://github.com/halcyon-tech/vscode-ibmi/issues/47#issuecomment-1079211423, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACKWQFD5VEFUPBVWK36UVXLVBXU53ANCNFSM4YIR6CEA.
You are receiving this because you were mentioned.Message ID: @.***>

Also it seems the stat command will provide what you need for file properties.


@ sign is used for tasks and boards

Hi,
I think it is kind of confusing to reference tasks via @ sign, because it is also used for boards.
What do you think of using # to reference tasks?
instead of:
tb --move @13 current

we could use:
tb --move #13 @current

Since the output uses the @ sign for boards, it should be clearer for the user to reference tasks via #. He should be able to distinct between either types via the sign.
Thank you very much for this interesting project 👍

At least on bash and ZSH the # character denotes a comment and isn't passed to the program.
$ echo foo @bar #baz
foo @bar

why is the issue open?

I believe this is more a design/implementation issue than a but itself. But I agree it is very confusing. The @ tags should be made for boards only, keeping it consistent.


XN: In Compiler

Related Information
Owner - Nvidia. Scope - p4c. Requires support for new table properties such as add_on_miss, idle_timeout_with_auto_delete, default_action.
Issues

Connection Tracking: Too loose, UDP and Aging

Pull requests

PNA compatible connection tracking #21

Early Sept (Roop finished, need to merge & build compiler from fork)

Keep these separate

@marian-pritsak Issue marked as shipped, can we close issue?

@chrispsommers can we mark as closed?

Discussed with WG. Moving to closed


Server capabilities docs

What does this PR (Pull Request) do?
Adds "Server Capability" to the glossary and adds a section on required capabilities to the Delivery Services Overview.

[x] This PR fixes is not related to any Issue

Which Traffic Control components are affected by this PR?

Documentation

What is the best way to verify this PR?
Build and read the documentation. Ensure no build errors/warnings and everything written renders well and makes sense.
The following criteria are ALL met by this PR

[x] Tests are unnecessary
[x] This PR includes documentation
[x] An update to CHANGELOG.md is not necessary
[x] This PR includes any and all required license headers
[x] This PR does not include a database migration
[ ] This PR DOES NOT FIX A SERIOUS SECURITY VULNERABILITY

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/trafficcontrol-PR/4841/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/trafficcontrol-PR/4854/


How to perform inference on multiple GPUs?

I have 4 GPUs, 1m images.
I would like to use all 4 of them to run the method test.
Is there any tutorial that shows how to do this?

Pass gpus=-1 or gpus=4? I think the trainer would automatically figure it out.


[pl] Climate not working

It seems like if I want to set a temperature on a climate, Assist thinks I want to change the light color, not the temperature.
intent:   name: HassLightSet slots: {} details: {} targets: {} match: false sentence_template: <set> <name> na {color} [kolor] unmatched_slots:   name: 'temperaturę '   color: 30° celsjusza source: builtin

Can you add more information how you name your devices and how looks your sentences? If you go to test case in polish language you can find more examples how you can use it. https://github.com/home-assistant/intents/blob/main/tests/pl/climate_HassClimateSetTemperature.yaml

Yes I use this file as an example, and it still doesn't understand me. No matter what sentence from that file I say, it searches for the light, not the climate.

I checked it in my instances using Sentences parser and you're right.. in my case they return:
intent:
  name: HassLightSet
slots: {}
details: {}
targets: {}
match: false
sentence_template: <set> <name> na {color} [kolor]
unmatched_slots:
  name: 'temperaturę '
  color: 30 stopni
source: builtin

but it should return HassClimateSetTemperature. I will look on it..

I think I found the problem. There is problem with building intents for Home Assistant, because in my configuration there is absolutely nothing related to HassClimateSetTemperature.  @Mis1ify you can check your configuration (if you can). In folder /usr/local/lib/python3.12/site-packages/home_assistant_intents/data (you can find this path inside home assistant  container: docker exec -it homeassistant /bin/bash) you can find pl.json which contains all intents. In my configuration I don't have intents responsible for set temperature in climate domain. I have already reported it on Discord, but if necessary I will create a ticket. But this is very weird behaviour...

https://github.com/home-assistant/intents/blob/main/intents.yaml#L220 This intent is not supported yet directly with HA 😀 that's the reason it's not working for you.
@Mis1ify I think you can close this ticket for now until this configuration is no supported. 😀

Oh okay, thanks for investigation.

@Mis1ify If this functionality is important for you you can create custom sentences to set this devices 😀 Polish translation exist so you don't need create everything from the scratch.. there you can find good example how to do it:

https://github.com/xFrieDSpuDx/HomeAssistant-VoiceIntents
https://github.com/tetele/custom_sentences

Thank you!


Ability to stop async fiber with error or without error

Purescript aff allows to cancel Aff with error, like so
You call kill with an error https://github.com/purescript-contrib/purescript-aff/blob/a1c9c3ee4b91d806b35da1de7eadec4da396b6d0/src/Effect/Aff.purs#L190
And then You get that error in a killer-implementation callback
https://github.com/purescript-contrib/purescript-aff/blob/a1c9c3ee4b91d806b35da1de7eadec4da396b6d0/src/Effect/Aff/Compat.purs#L36
And do
cancel(cancelError)

Or can close without error using just cancel()

I wonder if it's makes sense to copy Aff foreign module
https://github.com/purescript-contrib/purescript-aff/blob/main/src/Effect/Aff.js
to this lib to make this lib work on node and browser (or it already works?, I didn't test)

Currently, this is too experimental and too much work in progress to write bindings for node and the browser. But in general, I'd rather not import/copy foreign code.
In order to implement cancelation with error, I'd need a clear specification of the semantics. Feel free to come up with such a spec.


add mindfulness page

add mindfulness page; correct the mixed use between mindfulness and affirmation before; add a simple test for created page

In case you're not as familiar with how to split up a PR, here's a pretty good overview of a few approaches: https://www.thedroidsonroids.com/blog/splitting-pull-request

Got it! I have opened another branch and will submit a PR when complete.

On Saturday, Jan 27, 2024 at 10:34 PM, Ben Lickly @.*** @.***)> wrote:
In case you're not as familiar with how to split up a PR, here's a pretty good overview of a few approaches: https://www.thedroidsonroids.com/blog/splitting-pull-request
—
Reply to this email directly, view it on GitHub (https://github.com/aimpowered/ZoomCompanion/pull/3#issuecomment-1913445638), or unsubscribe (https://github.com/notifications/unsubscribe-auth/AGMJ63KGDYECWVFBFWKLFH3YQXIMBAVCNFSM6AAAAABBPMJHGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMJTGQ2DKNRTHA).
You are receiving this because you were mentioned.Message ID: @.***>

Sounds good. Maybe we can start with just the test improvements?

Hi Kexin,
The current PR is too big for us to review effectively. Can we meet
sometime this week to figure out a way to break them down into small pieces
that stacked on top of each other?
Thanks!
-Shaomei
On Sun, Jan 28, 2024 at 9:12 AM Ben Lickly @.***> wrote:

Sounds good. Maybe we can start with just the test improvements?
—
Reply to this email directly, view it on GitHub
https://github.com/aimpowered/ZoomCompanion/pull/3#issuecomment-1913664259,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABRKPZHLHAMX7JUSW36XBLYQ2BJVAVCNFSM6AAAAABBPMJHGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMJTGY3DIMRVHE
.
You are receiving this because you commented.Message ID:
@.***>


[Bug]: Edit invoice on "Receive Bitcoin" forces back to "Receive Instantly"

Describe the bug
If a value is entered on the "Receive Instantly" page it is then not possible to create a "Receive Bitcoin" invoice because the UI is stuck trying to produce a lightning invoice.
Reproduce

Open android app at a new wallet (or probably existing wallet too)
Tap "Receive" button in bottom right
Tap "Receive Instantly" slider to begin producing lightning invoice
Input a valid value (e.g. 55555)
Tap "Continue"
Tap back arrow twice to return to view QR
Tap "Receive Instantly" again to toggle back to on-chain Bitcoin
Tap "Edit" button to create Bitcoin invoice

Desired Result:
"Edit Invoice" page is displayed
Actual Result:
"Receive Instantly" page is displayed. If I now tap "Continue" I am forced back into "Receive Instantly" mode.
Screenshots / Recording
https://drive.google.com/file/d/1nSlxYS2M2TpB924xUSorJsl8RFvxHRTc/view?usp=sharing
Operating system
Android 13
Bitkit version
V1.0
Log output
No response

Hi @james-iohk, thanks for sharing this issue.


Feature request : export to a csv file

Hello,
Maybe a feature request.
I'm searching a solution to export the result to a csv file.
I feel more conformable to use excel than the output bash. (with excel better global view, can sort cells by name, by values, ...)
I seen that it is possible to generate a json or yaml, but nothing about csv.
Is it possible to convert a json or yaml easily to csv?
Any idea, thanks for your help.

Hi @hafx,
No CSV support yet, but PRs are welcome! To get an idea of what is involved in adding it, take a look at the other exporters (formatters) here: https://github.com/robusta-dev/krr/tree/main/robusta_krr/formatters

Hi @aantn,
Yes, thanks for the link about the formatters.
I'm going to make a PR.

Wonderful,  looking forward to it. If you have questions feel free to ask
in the #contributors channel on Slack.
On Fri, Nov 3, 2023, 15:41 hafx @.***> wrote:

Hi @aantn https://github.com/aantn,
Yes, thanks for the link about the formatters.
I'm going to make a PR.
—
Reply to this email directly, view it on GitHub
https://github.com/robusta-dev/krr/issues/163#issuecomment-1792459741,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADYUB34CYCD44SBO2JZIEDYCTYBJAVCNFSM6AAAAAA62RLX6KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOJSGQ2TSNZUGE
.
You are receiving this because you were mentioned.Message ID:
@.***>

No one else is working on it as far as I know. Go for it and can't wait for that PR!

I put something in: https://github.com/robusta-dev/krr/pull/227


gazebo ignition simulation crashes when trying to simulate multiple turtlebot4

Please provide the following information:

OS: Ubuntu 22.04
ROS Distro: Humble
Built from source or installed: built from source
Package version: e21bd2c

Expected behaviour
multiple Turtlebot4 spawned in the simulation
Actual behaviour
the simulation crashes
To Reproduce
Provide the steps to reproduce:
I am trying to simulate multiple turtlebot4 on Gazebo Fortress using ROS2 humble on my Ubuntu 22.04 but when I tried to run these commands, each in alone terminal:
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py namespace:=salem
ros2 launch turtlebot4_ignition_bringup turtlebot4_spawn.launch.py namespace:=/robot2 x:=1.0 y:=0.0
ros2 launch turtlebot4_ignition_bringup turtlebot4_spawn.launch.py namespace:=/robot3 x:=2.0 y:=0.0

the simulation crashes and I get the following logs:
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [ground_plane] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [warehouse] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [pallet_box_0] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_big_0] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_big_1] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_big_2] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_3] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_4] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_5] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_6] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_7] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_big_3] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_big_4] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_0] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_1] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [shelf_2] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [barrier_0] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [barrier_1] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [barrier_2] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [barrier_3] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [chair_0] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [chair_1] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [fchair_0] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [fchair1] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [table0] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [Person 0 - Sitting] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:187] Parent entity with Id: [137] not found. Not adding model visual with ID[141]  and name [artifact_proximity_detector] to the rendering scene.
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [Person 1 - Standing] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [Person 2 - Walking] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [salem/standard_dock] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [salem/turtlebot4] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [/robot2/standard_dock] already exists
[ruby $(which ign) gazebo-1] [Err] [SceneManager.cc:201] Visual: [/robot2/turtlebot4] already exists
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::oakd_rgb_camera_frame::rgbd_camera] for entity [224]. Parent not found with ID[223].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::oakd_rgb_camera_frame::rgbd_camera] for entity [358]. Parent not found with ID[357].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/standard_dock::green_buoy_link::green_buoy] for entity [155]. Parent not found with ID[154].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/standard_dock::halo_link::halo] for entity [157]. Parent not found with ID[156].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/standard_dock::red_buoy_link::red_buoy] for entity [159]. Parent not found with ID[158].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/standard_dock::yellow_buoy_link::yellow_buoy] for entity [161]. Parent not found with ID[160].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::base_link::cliff_front_left] for entity [172]. Parent not found with ID[167].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::base_link::cliff_front_right] for entity [173]. Parent not found with ID[167].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::base_link::cliff_side_left] for entity [174]. Parent not found with ID[167].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::base_link::cliff_side_right] for entity [175]. Parent not found with ID[167].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::ir_intensity_front_center_left::ir_intensity_front_center_left] for entity [194]. Parent not found with ID[193].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::ir_intensity_front_center_right::ir_intensity_front_center_right] for entity [196]. Parent not found with ID[195].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::ir_intensity_front_left::ir_intensity_front_left] for entity [198]. Parent not found with ID[197].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::ir_intensity_front_right::ir_intensity_front_right] for entity [200]. Parent not found with ID[199].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::ir_intensity_left::ir_intensity_left] for entity [202]. Parent not found with ID[201].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::ir_intensity_right::ir_intensity_right] for entity [204]. Parent not found with ID[203].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::ir_intensity_side_left::ir_intensity_side_left] for entity [206]. Parent not found with ID[205].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[salem/turtlebot4::rplidar_link::rplidar] for entity [237]. Parent not found with ID[234].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/standard_dock::green_buoy_link::green_buoy] for entity [289]. Parent not found with ID[288].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/standard_dock::halo_link::halo] for entity [291]. Parent not found with ID[290].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/standard_dock::red_buoy_link::red_buoy] for entity [293]. Parent not found with ID[292].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/standard_dock::yellow_buoy_link::yellow_buoy] for entity [295]. Parent not found with ID[294].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::base_link::cliff_front_left] for entity [306]. Parent not found with ID[301].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::base_link::cliff_front_right] for entity [307]. Parent not found with ID[301].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::base_link::cliff_side_left] for entity [308]. Parent not found with ID[301].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::base_link::cliff_side_right] for entity [309]. Parent not found with ID[301].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::ir_intensity_front_center_left::ir_intensity_front_center_left] for entity [328]. Parent not found with ID[327].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::ir_intensity_front_center_right::ir_intensity_front_center_right] for entity [330]. Parent not found with ID[329].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::ir_intensity_front_left::ir_intensity_front_left] for entity [332]. Parent not found with ID[331].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::ir_intensity_front_right::ir_intensity_front_right] for entity [334]. Parent not found with ID[333].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::ir_intensity_left::ir_intensity_left] for entity [336]. Parent not found with ID[335].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::ir_intensity_right::ir_intensity_right] for entity [338]. Parent not found with ID[337].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::ir_intensity_side_left::ir_intensity_side_left] for entity [340]. Parent not found with ID[339].
[ruby $(which ign) gazebo-1] [Err] [RenderUtil.cc:1277] Failed to create sensor with name[/robot2/turtlebot4::rplidar_link::rplidar] for entity [371]. Parent not found with ID[368].

Other notes
Add anything else you thing is important.

One thing you can do to make two robots work better is pass the namespace in without a slash prepended. For example:
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py namespace:=salem
ros2 launch turtlebot4_ignition_bringup turtlebot4_spawn.launch.py namespace:=robot2 x:=1.0 y:=0.0

Does this make the system functional for your use case?
When I do this I am able to have the topics show up seemingly properly (I haven't gone through all of the topics or done that much in terms of testing. That being said, it does still seem to be trying to respawn elements from the world, I am not sure why that is. I will add this to my list of things to look into but anyone else feel free to look into this and contribute as well.
I am unable to spawn 3 robots although it is hard to say right now if this is a limitation because of the issue aforementioned or if it is just about the pure number of nodes / topics. You could try disabling sensors that you aren't using and see if that allows you to spawn 3 robots.

The problem is that I needed at least 4 robots to perform navigation and mapping of an area for a school project and the turtlebot4 simulator doesn't support that feature yet without producing errors in the console.
would it work with turtlebot3 or shall I search for another robot simulator?

@abdosalem490 I cannot speak to the capabilities of Turtlebot3 as I have not used it before. You could inquire on the Turtlebot3 repo or robotics stack exchange.
@msminirobot Are you able to simulate two robots and with no extra objects? As you work through your troubleshooting feel free to make contributions back about this issue.

Yes I have tried many times, for two turtlebot4 it works fine but when you want to add more than two turtlebot4, then the gazebo ignition crashes.
But I developed swarm of turtlebot3 in classic gazebo and implemented NAV2 and it works perfectly fine.
Yes the turtlebot4 simulation and hardware implementation for multiple turtlebot4 is much difficult.
I have two turtlebot4, and I am trying to implement some navigation but still trying my best.

@msminirobot are you talking about TB4 or TB3?
For Turtlebot4, you can control two turtlebot4, but for TB3 you can use as much you want.
I am sharing you the TB4 screen shot here

@msminirobot Thank you for your help, now the gazebo ignition is not crashing.
After comments out the following:

I got this in the third TB4 terminal:
[lifecycle_manager-56] [INFO] [1702465625.421946453] [robot3.lifecycle_manager_navigation]: Waiting for service controller_server/get_state...
While fourth TB4 is not spawn on the gazebo and I got the following message in terminal 4:

@msminirobot Please guide me, how to resolve these issues and spawn more robots in Gazebo. thank you

@msminirobot @hilary-luo
Secondly, I have two TB4 hardware, can you guide me please how to spawn both TB4 on a single map, and then how to perform and localization and navigation? thank you

@msminirobot, I really really like to thank you for posting the solution in this thread, I have been struggling with TB4 for a while and I gave up. so I started implementing my own robot but at some point, I realized it would require me a tedious amount of work to get it working with other packages like slam_toobox and nav2. I tried your solution and it worked like a charm.
and again, I really appreciate that when you found the solution, you posted it in this thread. keep it up 👍.


Requesting update for objection@next

We're looking to make use of the row-level locking option for upsertGraph that was implemented in a8992dc (mentioned in #1127).

I've released 1.5.0-rc.1. Note that it the upsertGraph was completely rewritten for it internally, so you can run into bugs. The upsertGraph test set is not perfect yet. Please let me know if you run into bugs in your upsertGraph code.


[Bug Report] Not displayed correctly in cascader

Element UI version
0.1.0
OS/Browsers version
win10
Vue version
2.6.10
Reproduction Link
https://jsfiddle.net/DangoSky/7osfp265/1/
Steps to reproduce
As I tested in jsfiddle, I chose the cascading path normally, but the path shown is not the same as what I chose.  What surprised me even more is that if add a parameter to the third-level data, the results will be displayed normally.
What is Expected?
Can display the path I chose.

What is actually happening?
Its first and second level data is unchanged, only changed third level data.

#16393


--inlineAssets creates invalid base64 images

Hi together,
When using the --inlineAssets option the images are base64 encoded. Unfortunately they can not be shown because there is some kind of version added to the end of it.
data:image/png;base64,[removed-image-data]?v=1712433107782
The version is also added when not using --inlineAssets, but then it is not an issue.

I guess it was introduced with this change:
https://github.com/kien-ht/cypress-image-diff-html-report/commit/70209dcda404573d9de9e6900f17308d319cd230#diff-0a0478ad0f8c8e35491841ae5e25e0636dd7082d6d5c673456afaeb43175cb23R57

I moved to version 1.4.0 before this change. Now I get the inlined images in the overview. That's nice.
But the detail images are not working, they also have that version postfix.

Thanks a lot for this fast fix!


Cilium v1.16.1 daemon fails to Start on EKS without default addons

Is there an existing issue for this?

[X] I have searched the existing issues

Version
equal or higher than v1.16.0 and lower than v1.17.0
What happened?
After installing cilium v1.16.1 using helm on Eks cluster the cilium pods keeps crashing with fatal errors, I expected the cilium agent and cilium daemon to start successfully after installation
How can we reproduce the issue?
1. Deployed eks cluster without addons
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster-test
  region: us-east-1
iam:
  withOIDC: true

addonsConfig:
  disableDefaultAddons: true
addons:
  - name: coredns

2.  here i Deployed cilium version 1.16.1 using helm chart
helm install cilium cilium/cilium --version 1.16.1 \
  --namespace kube-system \
  --set eni.enabled=true \
  --set ipam.mode=eni \
  --set egressMasqueradeInterfaces=eth0 \
  --set routingMode=native \
  --set k8sServiceHost=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.us-east-1.eks.amazonaws.com \
  --set k8sServicePort=443 \
  --set kubeProxyReplacement=true

3.Deployed the Node group
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster-test
  region: us-east-1

managedNodeGroups:
  - name: cluster-node
    instanceType: t2.medium
    desiredCapacity: 2
    privateNetworking: true

Cilium Version
v 1.16.1
Kernel Version
MINGW64_NT-10.0-19045 v3.4.10-87d57229.x86_64 2024-02-14 20:17 UTC x86_64 Msys
Kubernetes Version
Client Version: v1.30.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.30.3-eks-2f46c53
eksctl version
0.187.0
Regression
the cilium agent worked on v1.15.6
Sysdump
cilium-sysdump-20240821-211608.zip
Relevant log output
Logs from the cilium pods
time="2024-08-21T18:12:53Z" level=info msg="Kernel config file not found: if the agent fails to start, check the system requirements at https://docs.cilium.io/en/stable/operations/system_requirements" subsys=probes
time=2024-08-21T18:12:53Z level=info msg="Restored node IDs from the BPF map" module=agent.datapath count=0
time=2024-08-21T18:12:53Z level=info msg="Setting IPv6" module=agent.datapath.bigtcp device=enX0 gso_max_size=65536 gro_max_size=65536
time=2024-08-21T18:12:53Z level=info msg="Setting IPv6" module=agent.datapath.bigtcp device=enX1 gso_max_size=65536 gro_max_size=65536
time="2024-08-21T18:12:53Z" level=info msg="Using Managed Neighbor Kernel support" subsys=daemon
time="2024-08-21T18:12:53Z" level=info msg="Auto-enabling \"enable-node-port\", \"enable-external-ips\", \"bpf-lb-sock\", \"enable-host-port\", \"enable-session-affinity\" features" subsys=daemon
time="2024-08-21T18:12:53Z" level=info msg="No identity checkpoint file found, skipping restoration" file-path=/var/run/cilium/state/local_allocator_state.json subsys=identity-cache
...

time="2024-08-21T18:12:56Z" level=info msg="Initializing identity allocator" subsys=identity-cache
time="2024-08-21T18:12:56Z" level=info msg="Allocating identities between range" cluster-id=0 max=65535 min=256 subsys=identity-cache
time="2024-08-21T18:12:57Z" level=info msg="Waiting for all endpoints' goroutines to be stopped." subsys=daemon
time=2024-08-21T18:12:57Z level=error msg="Start hook failed" function="cmd.newDaemonPromise.func1 (cmd/daemon_main.go:1726) (agent.controlplane.daemon)" error="daemon creation failed: error while initializing daemon: failed while reinitializing datapath: timeout waiting for parameter net.ipv4.conf.enX0.rp_filter reconciliation: failed to get full path of sysctl setting net.ipv4.conf.enX0.rp_filter: invalid sysctl parameter: \"net.ipv4.conf.enX0.rp_filter\""
time="2024-08-21T18:12:57Z" level=info msg="All endpoints' goroutines stopped." subsys=daemon
time=2024-08-21T18:12:57Z level=error msg="Start failed" error="daemon creation failed: error while initializing daemon: failed while reinitializing datapath: timeout waiting for parameter net.ipv4.conf.enX0.rp_filter reconciliation: failed to get full path of sysctl setting net.ipv4.conf.enX0.rp_filter: invalid
sysctl parameter: \"net.ipv4.conf.enX0.rp_filter\"" duration=3.782504513s
time=2024-08-21T18:12:57Z level=info msg=Stopping
time="2024-08-21T18:12:57Z" level=info msg="Datapath signal listener exiting" subsys=signal
time="2024-08-21T18:12:57Z" level=info msg="Datapath signal listener done" subsys=signal
time=2024-08-21T18:12:57Z level=error msg="Observer job stopped with an error" module=agent.controlplane.auth name="auth gc-identity-events" func=auth.(*auth73s
time=2024-08-21T18:12:59Z level=info msg="agent.controlplane.auth.observer-job-auth gc-identity-events (rev=54)" module=health       73s

Anything else?
No response
Cilium Users Document

[ ] Are you a user of Cilium? Please add yourself to the Users doc

Code of Conduct

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

I do believe this was fixed in https://github.com/cilium/cilium/pull/34298
See also https://github.com/cilium/cilium/issues/34287


Automate cleaning up the removed or renamed models

User Story
When a model is deleted or renamed from code, dbt clean doesn't automatically remove the old models from QA and Production schema so we have to manually delete it. Tobias shared https://discourse.getdbt.com/t/faq-cleaning-up-removed-models-from-your-production-schema/113/11 that we might consider writing a macro to handle the deleted models
automatically

Looked at this a little bit, the proposed solutions to write a macro in this post are convoluted and require proper permission to run dbt run-operation delete_outdated_tables --args "{schema: [SCHEMA]}" command on production and qa to invoke the macro.
Since dbt suggests manually dropping the related the staled model it in their doc, I will leave it the way it is. If we end up having a lot of renamed model, we can revisit it


HDFS-14755. [Dynamometer] Hadoop-2 DataNode fail to start

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
154
Docker mode activated.

_ Prechecks _

+1
dupname
0
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

-1
test4tests
0
The patch doesn't appear to include any new or modified tests.  Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.

_ trunk Compile Tests _

+1
mvninstall
1614
trunk passed

+1
compile
29
trunk passed

+1
checkstyle
26
trunk passed

+1
mvnsite
31
trunk passed

+1
shadedclient
925
branch has no errors when building and testing our client artifacts.

+1
javadoc
30
trunk passed

0
spotbugs
64
Used deprecated FindBugs config; considering switching to SpotBugs.

+1
findbugs
60
trunk passed

_ Patch Compile Tests _

+1
mvninstall
31
the patch passed

+1
compile
19
the patch passed

+1
javac
19
the patch passed

+1
checkstyle
14
the patch passed

+1
mvnsite
25
the patch passed

+1
whitespace
0
The patch has no whitespace issues.

+1
shadedclient
970
patch has no errors when building and testing our client artifacts.

+1
javadoc
25
the patch passed

+1
findbugs
49
the patch passed

_ Other Tests _

+1
unit
482
hadoop-dynamometer-infra in the patch passed.

+1
asflicense
43
The patch does not generate ASF License warnings.

4674

Subsystem
Report/Notes

Docker
Client=19.03.0 Server=19.03.0 base: https://builds.apache.org/job/hadoop-multibranch/job/PR-1320/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/1320

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle

uname
Linux 7f6de639b055 4.15.0-52-generic #56-Ubuntu SMP Tue Jun 4 22:49:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / 6244502

Default Java
1.8.0_212

Test Results
https://builds.apache.org/job/hadoop-multibranch/job/PR-1320/1/testReport/

Max. process+thread count
927 (vs. ulimit of 5500)

modules
C: hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra U: hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-1320/1/console

versions
git=2.7.4 maven=3.3.9 findbugs=3.1.0-RC1

Powered by
Apache Yetus 0.10.0 http://yetus.apache.org

This message was automatically generated.

@tasanuma, thanks for submitting this! I don't think this will work if you have multiple storage locations configured, which is a common pattern. Is there anything we can do which will both support multiple storage locations, but also be backwards-compatible?

@xkrogen  Thanks for your review!
In fact, I tested multiple storage locations and seems it works fine.

Can you explain why it works? This is the code MiniDFSCluster uses to parse it (within GenericTestUtils):
  public static File getTestDir() {
    String prop = System.getProperty(SYSPROP_TEST_DATA_DIR, DEFAULT_TEST_DATA_DIR);
    if (prop.isEmpty()) {
      // corner case: property is there but empty
      prop = DEFAULT_TEST_DATA_DIR;
    }
    File dir = new File(prop).getAbsoluteFile();

(SYSPROP_TEST_DATA_DIR is the same as PROP_TEST_BUILD_DATA)
I would expect new File(prop) to complain if you give it a comma-separated list of directories.

Thanks for your explanation, @xkrogen.
I see. I'm not sure why my job worked, but it should be one directory there. So if we have multiple storage locations, we should use the first of them here, right?
Updated the PR. It handles that case while keeping the compatibility between hadoop-2 and hadoop-3.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
144
Docker mode activated.

_ Prechecks _

+1
dupname
0
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

-1
test4tests
0
The patch doesn't appear to include any new or modified tests.  Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.

_ trunk Compile Tests _

+1
mvninstall
1542
trunk passed

+1
compile
26
trunk passed

+1
checkstyle
26
trunk passed

+1
mvnsite
28
trunk passed

+1
shadedclient
904
branch has no errors when building and testing our client artifacts.

+1
javadoc
29
trunk passed

0
spotbugs
56
Used deprecated FindBugs config; considering switching to SpotBugs.

+1
findbugs
50
trunk passed

_ Patch Compile Tests _

+1
mvninstall
31
the patch passed

+1
compile
22
the patch passed

+1
javac
22
the patch passed

+1
checkstyle
15
the patch passed

+1
mvnsite
26
the patch passed

+1
whitespace
0
The patch has no whitespace issues.

+1
shadedclient
977
patch has no errors when building and testing our client artifacts.

+1
javadoc
21
the patch passed

+1
findbugs
62
the patch passed

_ Other Tests _

+1
unit
489
hadoop-dynamometer-infra in the patch passed.

+1
asflicense
47
The patch does not generate ASF License warnings.

4574

Subsystem
Report/Notes

Docker
Client=19.03.1 Server=19.03.1 base: https://builds.apache.org/job/hadoop-multibranch/job/PR-1320/2/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/1320

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle

uname
Linux b3eae61d6407 4.15.0-54-generic #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / 5e156b9

Default Java
1.8.0_222

Test Results
https://builds.apache.org/job/hadoop-multibranch/job/PR-1320/2/testReport/

Max. process+thread count
925 (vs. ulimit of 5500)

modules
C: hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra U: hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-1320/2/console

versions
git=2.7.4 maven=3.3.9 findbugs=3.1.0-RC1

Powered by
Apache Yetus 0.10.0 http://yetus.apache.org

This message was automatically generated.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
102
Docker mode activated.

_ Prechecks _

+1
dupname
0
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

-1
test4tests
0
The patch doesn't appear to include any new or modified tests.  Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.

_ trunk Compile Tests _

+1
mvninstall
1473
trunk passed

+1
compile
28
trunk passed

+1
checkstyle
25
trunk passed

+1
mvnsite
31
trunk passed

+1
shadedclient
881
branch has no errors when building and testing our client artifacts.

+1
javadoc
27
trunk passed

0
spotbugs
52
Used deprecated FindBugs config; considering switching to SpotBugs.

+1
findbugs
47
trunk passed

_ Patch Compile Tests _

+1
mvninstall
32
the patch passed

+1
compile
20
the patch passed

+1
javac
20
the patch passed

+1
checkstyle
17
the patch passed

+1
mvnsite
24
the patch passed

+1
whitespace
0
The patch has no whitespace issues.

+1
shadedclient
946
patch has no errors when building and testing our client artifacts.

+1
javadoc
21
the patch passed

+1
findbugs
50
the patch passed

_ Other Tests _

+1
unit
502
hadoop-dynamometer-infra in the patch passed.

+1
asflicense
38
The patch does not generate ASF License warnings.

4401

Subsystem
Report/Notes

Docker
Client=19.03.1 Server=19.03.1 base: https://builds.apache.org/job/hadoop-multibranch/job/PR-1320/3/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/1320

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle

uname
Linux eea15bb01f2a 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / ee7c261

Default Java
1.8.0_212

Test Results
https://builds.apache.org/job/hadoop-multibranch/job/PR-1320/3/testReport/

Max. process+thread count
927 (vs. ulimit of 5500)

modules
C: hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra U: hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-1320/3/console

versions
git=2.7.4 maven=3.3.9 findbugs=3.1.0-RC1

Powered by
Apache Yetus 0.10.0 http://yetus.apache.org

This message was automatically generated.

I see. The problem is just that getUri() is private in branch-2, so we can still leverage the functionality of DataNode.getStorageLocations, we just can't directly convert it to a URI. This will fail in some scenarios, e.g. a PROVIDED storage type, but I think this is fine. +1 from me.

Thanks!


Add /Sync endpoint

Endpoint should act just like the __query endpoint, but accepts a sync object with the same structure as our responses.

This is complete, although there are currently no limitations on what data can be written


test: add a work around for range sync issue during sim tests

Motivation
Make the sim tests more stable.
Description
A workaround for the issue https://github.com/ChainSafe/lodestar/issues/6435 during the sim tests. The actual issue should be fixed with proper investigation and detail integration tests.
Steps to test or reproduce

Run sim tests

:tada: This PR is included in v1.16.0 :tada:


Improve docs on Fragments, how exactly is it working

Hey, so I am relying on data from the database to verify certain fields, so it seems using fragments would be beneficial for my use case. However I am not really sure how they work or what they do.
So there is this in the docs:
const isItemOwner = rule({
  cache: 'strict',
  fragment: 'fragment ItemID on Item { id }',
})(async ({ id }, args, ctx, info) => {
  return ctx.db.exists.Item({
    id,
    owner: { id: ctx.user.id },
  })
})

Does it provide a way to cache the data you get from the Item query or what is it doing here?
Also why are you getting id from the parent argument and not from args ? I would be happy if I could get some explanation of how exacyly fragments work together with graphql-shield.
(I know what fragments in general are, (I think))

ItHi @BjoernRave 👋 ,
The idea behind fragments is that you can supply additional information to graphql-binding so that you could get, say id, even when frontend didn't request it.
I am not sure whether there's any benefit from using it; it serves the purpose I mentioned, but I have no idea how to use it in other contexts. All in all, it dumps results in { fragmentReplacements, schema } when you use applyMiddleware like that:
const { schema, fragmentReplacements } = applyMiddleware(schema, permissions)

It makes sure that based on where you used a particular rule with the fragment, it generated a correlating instance of a FragmentReplacement.
I hope that gives you a bit of context. 🙂

@maticzav Do you have an example repo handy/available to share? I find the https://github.com/maticzav/graphql-shield#fragments section a bit confusing and think it'd be helpful to see the other bits referenced in the code snippet from that section.
Thanks!

https://github.com/maticzav/gimb-events/blob/master/server/src/shield.ts
Hope that helps.

@maticzav That does, thank you. I've been using prisma-client (which doesnt support the fragment option) and need to investigate switching over to the prisma-binding (which does)


Documentation Request - 100% Angular Fallback

In the midst of supporting private browsing on Safari (it doesn't allow webstorage), our product owner wanted a fallback for storage.
The solution we've provided was a temporary storage fallback, utilizing Angular's $cacheFactory and a decorator for angular-locker.
Here is a link to the Gist.
Would this be something you would want to provide in the case someone did not want to use Remy's polfill that utilizes cookies for a fallback? I realize that this is not as permanent as a cookie (refreshing will wipe the $cacheFactory values), but some people might want something Angular driven.
This is just a suggestion, any thoughts, comments, or criticisms would be highly appreciated as this is a code that is live on a production level website (tens of thousands of users a day).

merged


Silvermine Chromecast plugin doesn't work in v7.7.0

Description
Silvermine Chromecast plugin doesn't work in v7.7.0
https://codepen.io/DJ-PD/pen/jdWWEg
Steps to reproduce
Explain in detail the exact steps necessary to reproduce the issue.

Under settings/html/head replace v7.6.6 to v7.7.0 both script and css ***SCRiPTS***/ ***STYLESHEETS***
Test with above codepen e.g test 7
Chromecast icon disappear

Results
Expected
Chromecast icon present and function works.
Actual
Chromecast icon disappear.
Error output
n/a
Additional Information
Will share this information with VideoJS team as well.
versions
videojs
7.6.x and 7.7.0
browsers
Chrome version 78.0.3904.108 and probably more.
OSes
Windows 10, Android, iOS
plugins
Silvermine chromecast

@DJ-PD Thanks for the example and good write-up. Unfortunately, we don't have the bandwidth right now to look into this, so if you find more or are able to submit a PR, please do so. I'm not sure when our next big VideoJS upgrade will be scheduled, so can't even give an ETA on when we might be able to look into it.

I can confirm that it is working again with VideoJS v7.7.1

Glad to hear that!


Open Graph Warning

I'm using the Facebook Open Graph Object debugger and it found the following issues
Like Button Warnings That Should Be Fixed:

Admins And App ID Missing	fb:admins and fb:app_id tags are missing. These tags are necessary for Facebook to render a News Feed story that generates a high click-through rate.

Like Button Tag Missing	og:image is missing. The og:image meta tag is necessary for Facebook to render a News Feed story that generates a high click-through rate.

Any idea what I can add to the config or possibly the gem?

@jamesy829 Were you able to find a solution for this?
Not sure about the Admins or og:image, but the shareable config file has a place for the app_id.
    ##############
    #facebook
    ##############
    config.app_id = '' # required if using facebook button!
    config.send= 'false'

Did you figure out how to set facebook admins with shareable?


AMBARI-24784. Ambari-agent cannot register sometimes

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/4428/
Test FAILed.
Test FAILured.


board updates 08-17

updates "Beam.gg" to "Senseily" in Jacques Fu position value

Closing due to age and the information isn't really up to date.


Add markdown-lint-checker

@wlsf82 can you please review this markdown-lint-checker, please? I don't know why it's not running on Checks stage.


Recommend onConflictUseLoaded on MetacelloConflictingProjectError

As a complete new-comer to this ecosystem, I experienced a moment of stuckness when I tried to load a package by following instructions in its README, e.g
https://github.com/PolyMathOrg/PolyMath
Metacello new
        repository: 'github://PolyMathOrg/PolyMath:v1.0.2';
        baseline: 'PolyMath';
        load

and received an error and debug interface:

I don't know how to copy the message "MetacelloConflictingProjectError ...". The clipboard icon copies other stuff, but I don't know what that stuff is.
One solution ends up being to do
Metacello new
        repository: 'github://PolyMathOrg/PolyMath:v1.0.2';
        baseline: 'PolyMath';
	onConflictUseLoaded;
	load

Perhaps it should be Metacello to suggest this in this error message, but is there a way for GToolkit to display a hint on this specific error?

This is a very nice idea.
The debugger is moldable, too, and can change depending on what is on the stack. So, we could indeed offer a dedicated debugger that offers suggestions for this specific error.


Atomizer doesn't handle optional params well

Some styles have optional values, for instance border-spacing can have one or two values:
border-spacing: 1em
border-spacing: inherit
border-spacing: 1em 33%
Currently in Atomizer if a rule specifies two arguments, and you don't pass the 2nd argument, then the regex placeholder is passed through:
.Bdsp\(1em\) {
  border-spacing: 1em $1;
}
.Bdsp\(i\) {
  border-spacing: inherit $1;
}
.Bdsp\(1em\,33\%\) {
  border-spacing: 1em 33%;
}

Seems that Atomizer should strip placeholders if they're not found.
@renatoi @thierryk

In v3.1.1


Facet sidebar shifts when it refreshes

The issue is as @thadguidry says:

Unneccesary jumping up/down of Facet panels while users click on selections. The div browsing-panel-indicator will quickly show a hidden spinner “Refreshing facets…” which is above the browsing-panel-controls and hence causes all child elements underneath to suddenly move down and then back up. The effect to a user is disconcerting with jerky motion.

@elebitzero Thanks for tackling this issue.  The question will be where to move this small notice so that users still see it if there is a long running refresh on many facets?  I don't even know how to produce such a state.  Maybe have many (25-50?) facets with some custom expressions that take a long time to calculate?  We also could change the longish test "Refreshing facets..." to just a spinner icon (does Clusterer have one useful to borrow or shrink?) with some alt hover text and place this small icon in the top right or left corner of leftPanelDiv or in lower elements?


copy bytes in StreamBucket.Builder build()

babb0cee5458c19e78e228224fd592ba66dd4d7d broke the StreamBucket.
If the StreamBucket is sent to the same node the writeTo/readFrom aren't
executed so the bytes aren't copied.
And BytesStreamOutput.reset resizes the bytesArray if it grew larger than
1024 which will also result in failures.

ack


transformers version when fine-tuning

I'm trying to fine-tune BGE-M3 based on the README here: https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/finetune
I originally started with the latest transformers version a few weeks ago, and found that the loss and grad norms were spiking during fine-tuning (despite using gradient clipping with max_grad_norm=1).
Then, I noticed this comment in your README:

The new version of Transformers may pose issues for fine-tuning. If you encounter problems, you can try to downgrade to versions 4.33-4.36.

So I downgraded to transformers 4.33 and things seemed to work fine. However, when fine-tuning the full model on my dataset, I observed that the performance on my in-domain test set was degrading as compared to using BGE-M3 zero-shot. So I thought I will try to use adapters/LoRA with BGE-M3 and made some code changes to BGE-M3 to try it out. Code changes are based on the "Train a PEFT Adapter" section in this page: https://huggingface.co/docs/transformers/main/en/peft
When testing this code change, I faced an error which indicated that I cannot use/add adapters with transformers 4.33. Therefore, I moved to 4.36 and I am now able to add adapters to the model class. But now I face a different issue, with the tokenizer:
  File "/FlagEmbedding/FlagEmbedding/baai_general_embedding/finetune/run.py", line 59, in main
    tokenizer = AutoTokenizer.from_pretrained(
  File "/environments/my_conda_env/lib/python3.8/site-packages/transformers/models/auto/tokenization_auto.py", line 787, in from_pretrained
    return tokenizer_class.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs)
  File "/environments/my_conda_env/lib/python3.8/site-packages/transformers/tokenization_utils_base.py", line 2028, in from_pretrained
    return cls._from_pretrained(
  File "/environments/my_conda_env/lib/python3.8/site-packages/transformers/tokenization_utils_base.py", line 2253, in _from_pretrained
    init_kwargs[key] = added_tokens_map.get(init_kwargs[key], init_kwargs[key])
TypeError: unhashable type: 'dict'

This seems to be a known issue that was reported here and fixed here. If I want to pull this fix, I will need to use a transformers version other than 4.36 now.
Why does the latest transformers not work well with BGE-M3 fine-tuning? Is there some way we can make BGE-M3 fine-tuning work successfully with the latest version of transformers? That will ensure users can get all the latest fixes rather than trying to patch old versions+files in a hacky way. Alternately, what would your recommendation be to help unblock this?
Thank you!

The latest transformers can be used to fine-tune BGE-M3.
TypeError: unhashable type: 'dict' This error is due to the tokenizer_config.json. We have updated the file in huggingface,  and you can download it and re-run the code.

Thanks for your response - I unblocked myself on this error by downgrading to transformers 4.34, but I can test with the latest transformers as well. Is the following comment in your README no longer true? If so, perhaps you could remove it from the README.

The new version of Transformers may pose issues for fine-tuning. If you encounter problems, you can try to downgrade to versions 4.33-4.36.

On the PEFT/adapter use-case I mentioned in my issue, I found that I need to make changes to sentence_transformers in my python site-packages in the conda env to ensure the below line runs correctly during fine-tuning.
https://github.com/FlagOpen/FlagEmbedding/blob/0fe98ddefbd9d2caced52e94b9f8421d5ba7317f/FlagEmbedding/baai_general_embedding/finetune/trainer.py#L5
But even after doing it, I am unable to load the fine-tuned weights into sentence_transformers. It is looking for a config.json when the saved checkpoints only has adapter_config.json.
Do you plan to add support for PEFT for BGE-M3? I am observing catastrophic forgetting with BGE-M3 on some datasets during fine-tuning, so I wanted to try PEFT.


chore(release): revert downgrade of bulk-import-common

This reverts commit 9e239c5ae768ed6cbe5aebf483f318c42b984c91.
Yet another MSR issue:
https://github.com/janus-idp/backstage-plugins/actions/runs/10819711893/job/30018196326
/cc @PatAKnight @AndrienkoAleksandr

/cc @dzemanov


Ensure DB encoding is UTF-8

Summary
The default PostgreSQL DB encoding depends on the shell locale set at initialization time.
As Mattermost might not work with other encodings, create the DB by setting the UTF-8 encoding explicitly.
Ticket Link
More details here:

https://github.com/mattermost/docs/issues/3943
https://github.com/NethServer/nethserver-mattermost/pull/56

Hello @DavidePrincipi,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.
Per the Mattermost Contribution Guide, we need to add you to the list of approved contributors for the Mattermost project.
Please help complete the Mattermost contribution license agreement?
Once you have signed the CLA, please comment with /check-cla and confirm that the CLA check is green.
This is a standard procedure for many open source projects.
Please let us know if you have any questions.
We are very happy to have you join our growing community! If you're not yet a member, please consider joining our Contributors community channel to meet other contributors and discuss new opportunities with the core team.

/check-cla

Thank you for this, @DavidePrincipi! To confirm, should this also be updated for the RHEL 8 docs? Or is it just for RHEL 7?

...I guess the same applies to any PostgreSQL-based documentation, however I can't verify it. Do I have to fix them all anyway?

Thanks, @DavidePrincipi, that's great. I'll defer to @agnivade and @streamer45 in terms of verifying it. And then we'll have a clearer idea of the extent of the update. For now, though, I don't want to add unnecessary work so I'll await their feedback.

Looks good to me editorially; agree with the suggestions made by @agnivade.

Makes sense to me.

Thanks, @streamer45! I do agree with that. I'll merge this PR and then create a HW ticket for the further update. :)


timezone

timezone transform doesn’t run on Linux

I haven't been had time to implement TimeZoneTransform which can convert from any timezone to another, but I did add ToLocalTimeTransform which converts from UTC to Orchard's configured time.
You'd use it like this:
<!-- Created is a date coming from the database stored as UTC -->
<add name="Created" type="datetime" t="toLocalTime()" />

Thanks.

toLocalTime() is not working

Confirmed.  This works when deployed to Windows but not on Linux (in Docker).  I'm not sure how to fix it yet.  The Orchard Core service I'm using relies on DateTimeKind being set properly so I will try to ensure that it is, and/or bypass checking the kind at all (assuming the user of the transform just knows what he/she is doing).

timezone(fromTimeZone,toTimeZone) should work now, but using IANA time zones not Windows (see this).  I checked it and it's working for me (Windows and Linux).  I'll re-open until I hear from you though.  Remember, use time zones like America/Detroit instead of Eastern Standard Time.


Cannot register/sign in to publish to my gallery

I'm trying to publish modules to my private gallery and cannot.  When I try to get my NuGet API key by signing in (or registering), I get the following error: 'We're unable to complete your request'.  It appears that I do not have the correct URL for the Microsoft Live login.

@i3kellyb I have not tested the functionality with Live IDs with the Gallery codebase
Most likely the Gallery Codebase needs to be refreshed for this to work.
For now it works only with local accounts (that are stored in the SQL DB)

How would I go about accessing the local accounts in the SQL db?

@i3kellyb Use either [SQLCMD] (https://www.microsoft.com/en-us/download/details.aspx?id=52680) or [SQL Management Studio] (https://msdn.microsoft.com/en-us/library/mt238290.aspx)
Example to connect to (LocalDB) instance:
You can refer to Users & Credentials table to look up local account info, including the APIKey:

Start a console in the context of the Database admin

runas /user:<machine>\GalleryAdmin cmd

Use SQLCMD to connect to the instance interactively:

C:\Program Files\Microsoft SQL Server\110\Tools\Binn>SQLCMD.EXE -S (LocalDB)\PSGallery
1> USE PSGallery
2> Select *from Users, Credentials
3> go
Changed database context to 'PSGallery'.
...
...
1>

Has anyone ever gotten above to work?  Fresh install and I can't access the database, period.  I've runas GalleryAdmin with SSMS and SQLCMD and that instance just doesn't work.  What is it?

Closing as this is resolved.


bluetooth: host: directed advertising in the disconnected cb

This change makes it possible to trigger directed advertising in the
disconnected callback context provided that there is enough space for
a new connection object.
Signed-off-by: Kamil Piszczek<EMAIL_ADDRESS>

@jhedberg, ye, this seems reasonable at first. However, I think that we cannot simply reuse the same connection object in the disconnected callback context, because it would be immediately tagged for cleanup in the conn module:
atomic_set_bit(conn->flags, BT_CONN_CLEANUP);

This seems wrong, the bt_conn_unref, will make the conn object available for allocation. But it will still be in use when the disconnected callback returns, .e.g it will be marked for conn_cleanup, (which is where the final bt_conn_unref should happen).

@joerchan bt_conn_lookup_addr_le() returns either NULL or a new reference to a successfully found connection. It's this reference that the code in the switch statement is releasing. Right after the switch statement there's a call to bt_conn_add_le() which overwrites the local pointer (conn variable). That said, it would probably be clearer if any calls in the switch statement would be immediately followed by conn = NULL; to make it clear that it was this function that owned the reference and it's now done using it, even though this would be redundant with the code that immediately follows the switch statement.

@jhedberg Right, did not see the bt_conn_ref in bt_conn_lookup_addr_le, so that makes more sense.
But still this would require us to have one more conn object free, so it would not work well when BT_CONN_MAX=1. It seems wasteful to have one more conn object.
I think we should try to re-use the existing conn object. Could we do the cleanup immediately in adv_start, and then continue with the conn object?

I modified the previous solution to get the following characteristics:

disconnected bt_conn can be reused for directed advertising
reused connection object won't be clean up because its state is changed from BT_CONN_DISCONNECTED to BT_CONN_CONNECT_DIR_ADV inside bt_conn_create_slave_le (stack only cleans up the connection object in the disconnected state)

@jhedberg, @joerchan, please take another look

This is actually quite similar to #16874 , just targeting a different role (slave vs master). The cleanup code does some things though that I don't think you should be skipping, e.g. what if there are pending outgoing buffers in the TX queue?

Yes, right. Then, I will wait with slave-related code alignment til #16874 is sorted. Calling the conn_cleanup on the connection object in the disconnected state seems to me like a correct approach.

Closing this PR as it is superseded by #16874


navigator.gpu is undefined in chrome 103

Environment
node 16.13.2
windows10 64bit
Reproduction

other page:

Describe the bug

follow nuxt official website install nuxt
npm install
use webgpu feature, not craete webgpu adapter
error ---> const adapter = await navigator.gpu.requestAdapter();
undefined --> navigator.gpu

Additional context
No response
Logs
No response

Hello do you have a minimal reproduction please ?
Does this code run only client-side ?

Yes, this isn't a Nuxt issue as far as I can tell as we do not use navigator.gpu in Nuxt.
Note that you will need to be careful to use navigator only in the client-side environment, but I suspect you're doing that as you've indicated the error is specific to chrome 103.
If you think this is a Nuxt issue, then please do feel free to provide a repro and we'll happily have a look.


Grate should respect user terminal background

Hello
Describe the bug
My terminal is using a white background but Grate logging is assuming or forcing a black background. This make the output difficult to read.
To Reproduce
Run grate inside a terminal with a white background.
dotnet grate --connectionstring="Server=<IP_ADDRESS>,33300;Database=antidote;User Id=SA;Password=fakePassword;TrustServerCertificate=True" --folders=./Server/Antidote.Database/Migrations/ --noninteractive

Expected behavior
The background should not be modified by grate.
Screenshots

Desktop (please complete the following information):

OS: [e.g. macOS, Linux] macOS
Version [e.g. 1.0.2] grate v<IP_ADDRESS>

I can completely understand why this would irk you!
Do you have any suggestions for how we should handle the various colour themes people use daily?  Black/white/purple/images etc are all backgrounds I've seen in use, and having a single theme to support them is clearly not going to work...
I'm hoping there's some sort of standardised BG/FG/Warning/error etc colour info avail somewhere we can use, but don't know where such a thing would live...

I don't think you can get the current colour of a terminal. I think each terminal emulator have their own mechanism or the ANSI colors/commands are computed during evaluation.
I think most of the tools I used only customised the foreground colour of the text they report. Like that the background is always respected.
It is not a perfect solution because if you write in green and the user has a green background the text will not be readable but I think this is how most console tools work.

I've just made a change to stop tinkering with the background, and it looks ok for one test in a row :D


Worked on the login and sign up pages

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 10
- Added 17

Complexity increasing per file
==============================
- src/components/auth/Login.js  3
- src/components/auth/LoginStyled.js  1
- src/components/auth/SignupStyled.js  1

Clones added
============
- src/components/auth/Login.js  4
- src/components/auth/Signup.js  2

See the complete overview on Codacy


Reduce number of packages in atomic-reactor RPM build

CLOUDBLD-89

Signed-off-by: Robert Cerven<EMAIL_ADDRESS>Maintainers will complete the following section:

[ ] Commit messages are descriptive enough
[ ] "Signed-off-by:" line is present in each commit
[ ] Code coverage from testing does not decrease and new code is covered
[ ] JSON/YAML configuration changes are updated in the relevant schema
[ ] Changes to metadata also update the documentation for the metadata
[ ] Pull request includes link to an osbs-docs PR for user documentation updates
[ ] New feature can be disabled from a configuration file

/packit copr-build

/packit copr-build

rn updated: Reduce number of packages in atomic-reactor RPM build


Angular 6.0.0 not supporting the Angular JWT

Packages Json:
    @angular/animations": **"^6.0.0",**
    "@angular/cdk": **"^6.0.0",**
    "@angular/common": **"^6.0.0",**
    "@angular/compiler": "^6.0.0",
    "@angular/core": "^6.0.0",
    "@angular/forms": "^6.0.0",
    "@angular/http": "^6.0.0",
    "@angular/material": "^6.0.0",
    "@angular/platform-browser": "^6.0.0",
    "@angular/platform-browser-dynamic": "^6.0.0",
    "@angular/router": "^6.0.0",
    "@auth0/angular-jwt": "^1.1.0",
    "core-js": "^2.5.4",
    "hammerjs": "^2.0.8",
    "jwt-decode": "^2.2.0",
    "ngx-cookie-service": "^1.0.10",
    "rxjs": "^6.0.0",
    "zone.js": "^0.8.26"

Log Error:
ERROR in node_modules/@auth0/angular-jwt/src/jwt.interceptor.d.ts(3,10): error TS2305: Module '"C:/project/lawassito/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/rxjs/Observable.d.ts(1,15): error TS2307: Cannot find module 'rxjs-compat/Observable'.

the issue is rxjs 6.0.  The owners of this module will need to
$ ng update @angular/cli
$ ng update @angular/core
$ ng update rxjs
$ npm i -g rxjs-tslint
$ rxjs-5-to-6-migrate -p src/tsconfig.app.json

I get the following error:
Package "@auth0/angular-jwt" has an incompatible peer dependency to "@angular/common" (requires "^4.4.6||^5.0.0", would install "6.0.0")

This lib is actually for Angular 1. You're looking for http://github.com/auth0/angular2-jwt

The naming of the packages can make you confused actually.
According to here (https://www.npmjs.com/package/@auth0/angular-jwt), you should be using @auth0/angular-jwt that supports Angular6+.
Please try with npm install @auth0/angular-jwt instead. I tested this earlier following the upgrade plan here (https://update.angular.io/) with the Angular2+ QuickStart SDK on Auth0 worked just fine.

thanks alot.

Is it in the master? should I update?

It works but the package rxjs-compat is still required for backwards compatibility. Any idea when rxjs-compat can be removed?
ERROR in node_modules/@auth0/angular-jwt/src/jwt.interceptor.d.ts(3,10): error TS2305: Module '"/home/ian/guru/guru-connect-client/node_modules/rxjs/Observable"' has no exported member 'Observable'. node_modules/rxjs/Observable.d.ts(1,15): error TS2307: Cannot find module 'rxjs-compat/Observable'.

as per timfogarty-row8  and ian4h, look like we have to update the @auth0/angular-jwt?
do we have dates when we will get new version with above fixed?

Oho - I just saw the chenkie comment, I think he is right, SO I am closing this issue.
Thanks chenkie.

ERROR TypeError: Observable_1.Observable.defer is not a function
at AuthHttp.push../node_modules/angular2-jwt/angular2-jwt.js.AuthHttp.request (angular2-jwt.js:140)
at AuthHttp.push../node_modules/angular2-jwt/angular2-jwt.js.AuthHttp.requestHelper (angular2-jwt.js:104)
at AuthHttp.push../node_modules/angular2-jwt/angular2-jwt.js.AuthHttp.get (angular2-jwt.js:151)
getting this error after updating to angular 6

you are using angular2-jwt. change it to @auth0/angular-jwt.

@hesampour thanks bro it worked after moving to @auth0/angular-jwt v2


datetime tests don't return useful error message on failure

For reference https://github.com/Azure/cadl-ranch/blob/main/packages/cadl-ranch-specs/http/encode/datetime/mockapi.ts
If you send the wrong value, all you get is a HTTP 500 response. The tests should return something like got "foo", expected "bar" similar to other tests.

@jhendrixMSFT could you give the value you used? I could repro locally, when using wrong value, the response is good.

Hmm it appears that not all of these routes suffer from this problem. Here's one example that does.
https://github.com/Azure/cadl-ranch/blob/main/packages/cadl-ranch-specs/http/encode/datetime/mockapi.ts#L54-L69
   GET http://localhost:3000/encode/datetime/header/default
   User-Agent: azsdk-go-datetimegroup/v0.1.0 (go1.21.3; Windows_NT)
   value: REDACTED
   --------------------------------------------------------------------------------
   RESPONSE Status: 500 Internal Server Error
   Connection: keep-alive
   Content-Length: 0
   Date: Tue, 02 Jan 2024 16:30:33 GMT
   Keep-Alive: REDACTED
   X-Powered-By: REDACTED
   Response contained no body


Add ConPty APIs

Closes #695.
I added the bare minimum to cover those three functions. These APIs will only work on the very newest Windows. Does anything need to be done to feature gate them?

There's no need to feature gate things based on Windows version because extern functions are only linked to when used. That said, if you do use these functions then your program won't run at all on older Windows versions unless you use GetProcAddress to obtain pointers to the functions instead of using these extern functions directly.

Cool. I'd rather not use GetProcAddress but it's going to be quite a small segment of windows users able to use these currently! 😄
Do you need anything else needed to make this PR mergeable?

I've moved HPCON to wincontypes.rs and introduced a new feature as discussed. Turns out a number of the struct definitions in wincon.rs are also defined in wincontypes.h, so I've moved those at the same time.

Thanks - will fixup tomorrow morning :)

Have corrected all that now. Many thanks for your patience in helping refine all the bits I originally missed. Would a PR be useful to extend the notes in CONTRIBUTING to make those points clearer?

Just wondering if there's anything else you'd like to see to have this merged?

@retep998 just pinging to say we're hoping to merge https://github.com/jwilm/alacritty/pull/1762 but would like to see these definitions merged into winapi first (we're using this patch I'm providing). Please let me know if there's anything left I can do to help this PR merge.


Bog layout not dissapearing/resetting

plugin works amazing (even after dev mode was removed) however the layout won't dissapear after the bog event is done, and im afraid layouts can even stack with old ones that didn't disappear

Just add:
walkableBogTiles.clear();
to the shutdown of the plugin so u can clear it by turning the plugin off then on

Better solution, add this to BogPlugin.java:
@Subscribe
public void onGameStateChanged(GameStateChanged event)
{
	if (event.getGameState() == GameState.LOADING)
	{
		walkableBogTiles.clear();
	}
}

It will clear it when you leave the area automatically.


VM: Evaluating against an internal class segfaults

E.g., browse to Field or Function and evaluate something.

Any repro instructions for this?