Errand broker-registrar fails because it can't access system domain API endpoint (connect timeout)

Below is the output from the errand log. Should I setup something to enable access from the kafka-service-broker VM to the system domain API endpoint? I can access the system API endpoint from other deployments but from this particular one it appears to be blocked.
Thanks.
ubuntu@ops-manager-vm:~/kafka-service-broker-boshrelease$ bosh run-errand broker-registrar
Using environment '<IP_ADDRESS>' as client 'ops_manager'
Using deployment 'kafka-service-broker'
Task 386
Task 386 | 18:29:31 | Preparing deployment: Preparing deployment
Task 386 | 18:29:32 | Warning: Ambiguous request: the requested errand name 'broker-registrar' matches both a job name and an errand instance group name. Executing errand on all relevant instances with job 'broker
-registrar'.
Task 386 | 18:29:33 | Preparing package compilation: Finding packages to compile (00:00:00)
Task 386 | 18:29:33 | Preparing deployment: Preparing deployment (00:00:02)
Task 386 | 18:29:33 | Creating missing vms: broker-registrar/afa3b5a8-6374-4144-945f-ecd2e5e9eb8b (0) (00:01:16)
Task 386 | 18:30:49 | Updating instance broker-registrar: broker-registrar/afa3b5a8-6374-4144-945f-ecd2e5e9eb8b (0) (00:00:13)
Task 386 | 18:31:02 | Running errand: broker-registrar/afa3b5a8-6374-4144-945f-ecd2e5e9eb8b (0) (00:00:15)
Task 386 | 18:31:17 | Fetching logs for broker-registrar/afa3b5a8-6374-4144-945f-ecd2e5e9eb8b (0): Finding and packing log files (00:00:01)
Task 386 Started  Sun May 26 18:29:31 UTC 2019
Task 386 Finished Sun May 26 18:31:18 UTC 2019
Task 386 Duration 00:01:47
Task 386 done
Instance   broker-registrar/afa3b5a8-6374-4144-945f-ecd2e5e9eb8b
Exit Code  1
Stdout     CF_API_URL=https://api.sys.pcf.pvtl.dev
           CF_SKIP_SSL_VALIDATION=false
           CF_ADMIN_USERNAME=admin
           BROKER_NAME=starkandwayne-kafka
           BROKER_URL=http://<IP_ADDRESS>:8080
           BROKER_USERNAME=broker
           Setting api endpoint to https://api.sys.pcf.pvtl.dev...
           Request error: Get https://api.sys.pcf.pvtl.dev/v2/info: dial tcp <IP_ADDRESS>:443: i/o timeout
           TIP: If you are behind a firewall and require an HTTP proxy, verify the https_proxy environment variable is correctly set. Else, check your network connection.
           FAILED

Stderr     -
1 errand(s)
Errand 'broker-registrar' completed with error (exit code 1)
Exit code 1

Yeah that’s strange. I wonder why your errand VM cannot reach the 35.x.y.z IP.


GD crashed after using Circle Tool

Platform
Windows
Geode Version
v2.4.0
Mods Installed
geode.CircleTool
Steps to Reproduce
Went to the editor to try the circle tool and my game crashed when i clicked the "apply" button
Crash Report
Geode 27 May 15.47.44.log
Additional Information
No response

from your logs you clearly have more than circle tool installed


When printing an image with "print-scaling=fill" the image is not blown to fully fill the page but printed as with "print-scaling=auto"

Describe the bug
When I set my PostScript Printer Application to print images with PAPPL's built-in image filter using the raster callbacks and I supply the setting "print-scaling=fill", either by setting it as default in the web interface or by supplying the option -o print-scaling=fill on the command line, the setting is ignored and the image printed in standard "auto" mode leaving white borders at two edges.
Debug log shows use of "fill" but image comes out as with "auto":
D [2020-11-06T17:27:22.305Z] [Job 62] Created job file "/tmp/pappl248865.d/p00001j000000062-1221-pb237716_jpg.jpg", format "image/jpeg".
D [2020-11-06T17:27:22.316Z] [Printer test] Checking for new jobs to process.
D [2020-11-06T17:27:22.316Z] [Printer test] Starting job 62.
I [2020-11-06T17:27:22.316Z] [Client 4] Print-Job successful-ok
I [2020-11-06T17:27:22.316Z] [Job 62] Starting print job.
I [2020-11-06T17:27:22.316Z] [Client 4] OK application/ipp 223
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response: IPP/2.0 request-id=2, status-code=successful-ok
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response: operation-attributes-tag
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response:   attributes-charset charset utf-8
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response:   attributes-natural-language naturalLanguage en-us
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response: job-attributes-tag
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response:   job-id integer 62
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response:   job-uri uri ipp://localhost/ipp/print/test/62
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response:   job-state enum processing
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response:   job-state-message textWithoutLanguage Job printing.
D [2020-11-06T17:27:22.316Z] [Client 4] Print-Job response:   job-state-reasons keyword job-printing
test-62
I [2020-11-06T17:27:22.316Z] [Client 4] Closing connection from 'localhost'.
till@till-x1yoga:~/printing/openprinting/ps-printer-app/x$ D [2020-11-06T17:27:22.538Z] [Job 62] Getting options for num_pages=1, color=true
D [2020-11-06T17:27:22.538Z] [Job 62] print-color-mode=monochrome
D [2020-11-06T17:27:22.538Z] [Job 62] header.cupsWidth=4960
D [2020-11-06T17:27:22.538Z] [Job 62] header.cupsHeight=7015
D [2020-11-06T17:27:22.538Z] [Job 62] header.cupsBitsPerColor=8
D [2020-11-06T17:27:22.538Z] [Job 62] header.cupsBitsPerPixel=8
D [2020-11-06T17:27:22.538Z] [Job 62] header.cupsBytesPerLine=4960
D [2020-11-06T17:27:22.538Z] [Job 62] header.cupsColorOrder=0
D [2020-11-06T17:27:22.538Z] [Job 62] header.cupsColorSpace=18 (sGray)
D [2020-11-06T17:27:22.538Z] [Job 62] header.cupsNumColors=1
D [2020-11-06T17:27:22.538Z] [Job 62] header.HWResolution=[600 600]
D [2020-11-06T17:27:22.538Z] [Job 62] num_pages=1
D [2020-11-06T17:27:22.538Z] [Job 62] copies=1
D [2020-11-06T17:27:22.538Z] [Job 62] finishings=0x0
D [2020-11-06T17:27:22.538Z] [Job 62] media-col.bottom-margin=0
D [2020-11-06T17:27:22.538Z] [Job 62] media-col.left-margin=0
D [2020-11-06T17:27:22.538Z] [Job 62] media-col.right-margin=0
D [2020-11-06T17:27:22.538Z] [Job 62] media-col.size=21000x29700
D [2020-11-06T17:27:22.538Z] [Job 62] media-col.size-name='iso_a4_210x297mm'
D [2020-11-06T17:27:22.538Z] [Job 62] media-col.source='tray-1'
D [2020-11-06T17:27:22.538Z] [Job 62] media-col.top-margin=0
D [2020-11-06T17:27:22.538Z] [Job 62] media-col.type='stationery'
D [2020-11-06T17:27:22.538Z] [Job 62] orientation-requested=none
D [2020-11-06T17:27:22.538Z] [Job 62] page-ranges=1-1
D [2020-11-06T17:27:22.538Z] [Job 62] print-color-mode='monochrome'
D [2020-11-06T17:27:22.538Z] [Job 62] print-content-optimize='photo'
D [2020-11-06T17:27:22.538Z] [Job 62] print-darkness=0
D [2020-11-06T17:27:22.538Z] [Job 62] print-quality=draft
D [2020-11-06T17:27:22.538Z] [Job 62] print-scaling='fill'
D [2020-11-06T17:27:22.538Z] [Job 62] print-speed=0
D [2020-11-06T17:27:22.538Z] [Job 62] printer-resolution=600x600dpi
I [2020-11-06T17:27:22.538Z] [Job 62] Loading 4608x3456x1 JPEG image.
D [2020-11-06T17:27:22.667Z] [Job 62] ileft=0, itop=0, iwidth=4960, iheight=7015
I [2020-11-06T17:27:22.667Z] [Job 62] Auto-orientation: landscape
D [2020-11-06T17:27:22.667Z] [Job 62] xsize=4960, xstart=0, xend=4960, xdir=4608, xmod=3456, xstep=0
D [2020-11-06T17:27:22.667Z] [Job 62] ysize=6613, ystart=201, yend=6814, ydir=-1
D [2020-11-06T17:27:22.968Z] [Job 62] Adding options for finishings
D [2020-11-06T17:27:22.968Z] [Job 62] Adding option: PageSize
D [2020-11-06T17:27:22.968Z] [Job 62] Adding option: InputSlot
D [2020-11-06T17:27:22.968Z] [Job 62] Adding option: MediaType
D [2020-11-06T17:27:22.968Z] [Job 62] Adding option: orientation-requested
D [2020-11-06T17:27:22.968Z] [Job 62] Adding option presets depending on requested print quality
D [2020-11-06T17:27:22.968Z] [Job 62] Adding option: print-scaling
D [2020-11-06T17:27:22.968Z] [Job 62] Adding option: Resolution
D [2020-11-06T17:27:22.968Z] [Job 62] Adding option: Duplex
D [2020-11-06T17:27:22.968Z] [Job 62] Adding option: OutputBin
D [2020-11-06T17:27:22.968Z] [Job 62] PPD options to be used: Duplex=None InputSlot=Tray1 MediaType=Plain orientation-requested=3 page-ranges=1-1 PageSize=A4.FullBleed print-scaling=fill Resolution=600dpi
I [2020-11-06T17:27:22.969Z] [Job 62] filterPOpen: Filter function (PID 248893) started.
I [2020-11-06T17:27:23.301Z] Saving system state to '/tmp/ps_printer_app.state'.
D [2020-11-06T17:27:49.533Z] [Job 62] filterPOpen: Filter function completed with status 0.
D [2020-11-06T17:27:49.535Z] [Job 62] filterPClose: Filter function (PID 248893) exited with no errors.
I [2020-11-06T17:27:49.536Z] [Job 62] Completed, job-impressions-completed=1.
D [2020-11-06T17:27:49.537Z] [Job 62] Device read metrics: 0 requests, 0 bytes, 0 msecs
D [2020-11-06T17:27:49.537Z] [Job 62] Device write metrics: 0 requests, 0 bytes, 0 msecs

Note that I am using the patch of issue #61 to be able to print the image at all.
To Reproduce
Print an image to a Printer Application, with either "print-scaling=fill" set as printer default in the web interface or printing the job with the -o print-scaling=fill command line options. The image comes out with white on two borders (as in "auto" mode) and in the debug log it is also shown that  "print-scaling=auto" is used.
System Information:

As usual all current GIT snapshots on Ubuntu 10.20.

It looks like that you are mis-interpreting "print-scaling=fill" here. The difference you make between "auto" and "fill" is only whether to take into account or ignore unprintable margins. Here is the code in the papplJobFilterImage() function:
  if (options->print_scaling == PAPPL_SCALING_FILL)
  {
    // Scale to fill the entire media area...
    ileft   = 0;
    itop    = 0;
    iwidth  = options->header.cupsWidth;
    iheight = options->header.cupsHeight;
  }
  else
  {
    // Scale/center within the margins...
    ileft   = (unsigned)(options->media.left_margin * options->printer_resolution[0] / 2540);
    itop    = (unsigned)(options->media.top_margin * options->printer_resolution[1] / 2540);
    iwidth  = options->header.cupsWidth - (unsigned)((options->media.left_margin + options->media.right_margin) * options->printer_resolution[0] / 2540);
    iheight = options->header.cupsHeight - (unsigned)((options->media.bottom_margin + options->media.top_margin) * options->printer_resolution[1] / 2540);
  }

As I am using "A4.FullBleed" as paper size (zero margins) the effect of "auto" and "fill" got identical and so I assumed that the setting just did not arrive at this point.
The actual meaning of "fill" is blowing up the image so much that there are no blank margins any more, allowing for cropping of parts of the image when the aspect ratio of image and media mis-match. My image has 4:3 aspect ratio and A4 paper has 1.41:1. To fill this paper one has to stretch the long edge of the image to the long edge of the paper and the short edge gets too long for the paper so some of the image gets cut off.

This patch solves the problem, implementing "print-scaling=full" correctly (note that it also contains the fix of issue #61):
diff --git a/pappl/job-filter.c b/pappl/job-filter.c
index e1524ec..8e7f68f 100644
--- a/pappl/job-filter.c
+++ b/pappl/job-filter.c
@@ -104,22 +104,11 @@ papplJobFilterImage(
   // Images contain a single page/impression...
   papplJobSetImpressions(job, 1);

-  if (options->print_scaling == PAPPL_SCALING_FILL)
-  {
-    // Scale to fill the entire media area...
-    ileft   = 0;
-    itop    = 0;
-    iwidth  = options->header.cupsWidth;
-    iheight = options->header.cupsHeight;
-  }
-  else
-  {
-    // Scale/center within the margins...
-    ileft   = (unsigned)(options->media.left_margin * options->printer_resolution[0] / 2540);
-    itop    = (unsigned)(options->media.top_margin * options->printer_resolution[1] / 2540);
-    iwidth  = options->header.cupsWidth - (unsigned)((options->media.left_margin + options->media.right_margin) * options->printer_resolution[0] / 2540);
-    iheight = options->header.cupsHeight - (unsigned)((options->media.bottom_margin + options->media.top_margin) * options->printer_resolution[1] / 2540);
-  }
+  // Scale/center within the margins...
+  ileft   = (unsigned)(options->media.left_margin * options->printer_resolution[0] / 2540);
+  itop    = (unsigned)(options->media.top_margin * options->printer_resolution[1] / 2540);
+  iwidth  = options->header.cupsWidth - (unsigned)((options->media.left_margin + options->media.right_margin) * options->printer_resolution[0] / 2540);
+  iheight = options->header.cupsHeight - (unsigned)((options->media.bottom_margin + options->media.top_margin) * options->printer_resolution[1] / 2540);

   papplLogJob(job, PAPPL_LOGLEVEL_DEBUG, "ileft=%u, itop=%u, iwidth=%u, iheight=%u", ileft, itop, iwidth, iheight);

@@ -156,7 +145,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * height / width;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * width / height;
@@ -172,7 +161,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * height / width;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * width / height;
@@ -180,7 +169,7 @@ papplJobFilterImage(
 	break;

     case IPP_ORIENT_LANDSCAPE : // 90 counter-clockwise
-        pixbase    = pixels + width - depth;
+        pixbase    = pixels + width * depth - depth;
         img_width  = height;
         img_height = width;
         xdir       = (int)depth * (int)width;
@@ -188,7 +177,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * width / height;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * height / width;
@@ -204,7 +193,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * width / height;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * height / width;
@@ -214,10 +203,33 @@ papplJobFilterImage(

   options->orientation_requested = IPP_ORIENT_PORTRAIT; // Don't rotate in the driver

-  xstart = ileft + (iwidth - xsize) / 2;
-  xend   = xstart + xsize;
-  ystart = itop + (iheight - ysize) / 2;
-  yend   = ystart + ysize;
+  if (xsize <= iwidth)
+  {
+    xstart = ileft + (iwidth - xsize) / 2;
+    xend   = xstart + xsize;
+  }
+  else
+  {
+    xstart = ileft;
+    xend   = ileft + iwidth;
+    xsize  = iwidth;
+    pixbase = pixbase + xdir * (int)((img_width - img_height * iwidth / iheight) / 2);
+    img_width = img_height * iwidth / iheight;
+  }
+
+  if (ysize <= iheight)
+  {
+    ystart = itop + (iheight - ysize) / 2;
+    yend   = ystart + ysize;
+  }
+  else
+  {
+    ystart = itop;
+    yend   = itop + iheight;
+    ysize  = iheight;
+    pixbase = pixbase + ydir * (int)((img_height - img_width * iheight / iwidth) / 2);
+    img_height = img_width * iheight / iwidth;
+  }

   xmod   = (int)(img_width % xsize);
   xstep  = (int)(img_width / xsize) * xdir;

Note that I only tested "print-scaling=fill" and "print-scaling=auto". There are also the "auto-fit", "fit", and "none". They all should do the "right thing".

Looking at the 5 settings of "print-scaling" as you have described them very well here you implemented only "fit", once taking into account unprintable borders, once not. My fix adds support for "fill", but taking into account unprintable borders and when a borderless paper size/the "borderless" tick mark under "Media" is selected the entire page is filled with the image. I do not know whether it makes sense to support "none" as images do not have an absolute size, they are simply a grid of pixels. One could perhaps use the PPI in the images metadata or the resolution of the printer, I do not know what the IPP standard tells here.

You would need to leave out the first hunk of my patch to get "fill" work exactly as you have described.

Like this:
diff --git a/pappl/job-filter.c b/pappl/job-filter.c
index e1524ec..8cbe272 100644
--- a/pappl/job-filter.c
+++ b/pappl/job-filter.c
@@ -156,7 +156,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * height / width;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * width / height;
@@ -172,7 +172,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * height / width;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * width / height;
@@ -180,7 +180,7 @@ papplJobFilterImage(
 	break;

     case IPP_ORIENT_LANDSCAPE : // 90 counter-clockwise
-        pixbase    = pixels + width - depth;
+        pixbase    = pixels + width * depth - depth;
         img_width  = height;
         img_height = width;
         xdir       = (int)depth * (int)width;
@@ -188,7 +188,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * width / height;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * height / width;
@@ -204,7 +204,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * width / height;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * height / width;
@@ -214,10 +214,33 @@ papplJobFilterImage(

   options->orientation_requested = IPP_ORIENT_PORTRAIT; // Don't rotate in the driver

-  xstart = ileft + (iwidth - xsize) / 2;
-  xend   = xstart + xsize;
-  ystart = itop + (iheight - ysize) / 2;
-  yend   = ystart + ysize;
+  if (xsize <= iwidth)
+  {
+    xstart = ileft + (iwidth - xsize) / 2;
+    xend   = xstart + xsize;
+  }
+  else
+  {
+    xstart = ileft;
+    xend   = ileft + iwidth;
+    xsize  = iwidth;
+    pixbase = pixbase + xdir * (int)((img_width - img_height * iwidth / iheight) / 2);
+    img_width = img_height * iwidth / iheight;
+  }
+
+  if (ysize <= iheight)
+  {
+    ystart = itop + (iheight - ysize) / 2;
+    yend   = ystart + ysize;
+  }
+  else
+  {
+    ystart = itop;
+    yend   = itop + iheight;
+    ysize  = iheight;
+    pixbase = pixbase + ydir * (int)((img_height - img_width * iheight / iwidth) / 2);
+    img_height = img_width * iheight / iwidth;
+  }

   xmod   = (int)(img_width % xsize);
   xstep  = (int)(img_width / xsize) * xdir;

Updated patch to apply to the current state of the code:
diff --git a/pappl/job-filter.c b/pappl/job-filter.c
index ad72ad4..311aa19 100644
--- a/pappl/job-filter.c
+++ b/pappl/job-filter.c
@@ -156,7 +156,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * height / width;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * width / height;
@@ -172,7 +172,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * height / width;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * width / height;
@@ -188,7 +188,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * width / height;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * height / width;
@@ -204,7 +204,7 @@ papplJobFilterImage(

 	xsize = iwidth;
 	ysize = xsize * width / height;
-	if (ysize > iheight)
+	if ((options->print_scaling != PAPPL_SCALING_FILL && ysize > iheight) || (options->print_scaling == PAPPL_SCALING_FILL && ysize < iheight))
 	{
 	  ysize = iheight;
 	  xsize = ysize * height / width;
@@ -218,6 +218,33 @@ papplJobFilterImage(
   xend   = xstart + xsize;
   ystart = itop + (iheight - ysize) / 2;
   yend   = ystart + ysize;
+  if (xsize <= iwidth)
+  {
+    xstart = ileft + (iwidth - xsize) / 2;
+    xend   = xstart + xsize;
+  }
+  else
+  {
+    xstart = ileft;
+    xend   = ileft + iwidth;
+    xsize  = iwidth;
+    pixbase = pixbase + xdir * (int)((img_width - img_height * iwidth / iheight) / 2);
+    img_width = img_height * iwidth / iheight;
+  }
+
+  if (ysize <= iheight)
+  {
+    ystart = itop + (iheight - ysize) / 2;
+    yend   = ystart + ysize;
+  }
+  else
+  {
+    ystart = itop;
+    yend   = itop + iheight;
+    ysize  = iheight;
+    pixbase = pixbase + ydir * (int)((img_height - img_width * iheight / iwidth) / 2);
+    img_height = img_width * iheight / iwidth;
+  }

   xmod   = (int)(img_width % xsize);
   xstep  = (int)(img_width / xsize) * xdir;

Initial changes are in:
[master 8bafd72] Fix implementation of print-scaling for images, which involved a change to the papplJobFilterImage API to add the image resolution (Issue #62)
@tillkamppeter I wasn't able to use your changes as they didn't cover the full range of scenarios we might see, which required a change to the API (to pass in the image resolution). I will be (shortly) adding some test images that will be used as part of a unit test framework to verify proper scaling, positioning, and orientation.

I have tested your changes printing photos in "fill" and "fit" mode, both portrait and landscape and it works correctly.

Sorry, had to repeat the test. The images are correctly calculated and printed, for all 4 cases ("fill"/"fit" and portrait/landscape), but on the printouts with "fill" the Printer Application crashes after printing, with free(): invalid size.
Here is the debug log for a portrait image with "fill":
I [2020-11-10T22:03:30.966Z] [Job 88] Starting print job.
I [2020-11-10T22:03:30.966Z] [Client 1] OK application/ipp 223
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response: IPP/2.0 request-id=2, status-code=successful-ok
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response: operation-attributes-tag
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response:   attributes-charset charset utf-8
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response:   attributes-natural-language naturalLanguage en-us
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response: job-attributes-tag
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response:   job-id integer 88
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response:   job-uri uri ipp://localhost/ipp/print/test/88
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response:   job-state enum processing
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response:   job-state-message textWithoutLanguage Job printing.
D [2020-11-10T22:03:30.966Z] [Client 1] Print-Job response:   job-state-reasons keyword job-printing
test-88
I [2020-11-10T22:03:30.966Z] [Client 1] Closing connection from 'localhost'.
till@till-x1yoga:~/printing/openprinting/ps-printer-app/x$ D [2020-11-10T22:03:31.074Z] [Job 88] Getting options for num_pages=1, color=true
D [2020-11-10T22:03:31.075Z] [Job 88] print-color-mode=monochrome
D [2020-11-10T22:03:31.075Z] [Job 88] header.cupsWidth=4960
D [2020-11-10T22:03:31.075Z] [Job 88] header.cupsHeight=7015
D [2020-11-10T22:03:31.075Z] [Job 88] header.cupsBitsPerColor=8
D [2020-11-10T22:03:31.075Z] [Job 88] header.cupsBitsPerPixel=8
D [2020-11-10T22:03:31.075Z] [Job 88] header.cupsBytesPerLine=4960
D [2020-11-10T22:03:31.075Z] [Job 88] header.cupsColorOrder=0
D [2020-11-10T22:03:31.075Z] [Job 88] header.cupsColorSpace=18 (sGray)
D [2020-11-10T22:03:31.075Z] [Job 88] header.cupsNumColors=1
D [2020-11-10T22:03:31.075Z] [Job 88] header.HWResolution=[600 600]
D [2020-11-10T22:03:31.075Z] [Job 88] num_pages=1
D [2020-11-10T22:03:31.075Z] [Job 88] copies=1
D [2020-11-10T22:03:31.075Z] [Job 88] finishings=0x0
D [2020-11-10T22:03:31.075Z] [Job 88] media-col.bottom-margin=0
D [2020-11-10T22:03:31.075Z] [Job 88] media-col.left-margin=0
D [2020-11-10T22:03:31.075Z] [Job 88] media-col.right-margin=0
D [2020-11-10T22:03:31.075Z] [Job 88] media-col.size=21000x29700
D [2020-11-10T22:03:31.075Z] [Job 88] media-col.size-name='iso_a4_210x297mm'
D [2020-11-10T22:03:31.075Z] [Job 88] media-col.source='tray-1'
D [2020-11-10T22:03:31.075Z] [Job 88] media-col.top-margin=0
D [2020-11-10T22:03:31.075Z] [Job 88] media-col.type='stationery'
D [2020-11-10T22:03:31.075Z] [Job 88] orientation-requested=none
D [2020-11-10T22:03:31.075Z] [Job 88] page-ranges=1-1
D [2020-11-10T22:03:31.075Z] [Job 88] print-color-mode='monochrome'
D [2020-11-10T22:03:31.075Z] [Job 88] print-content-optimize='photo'
D [2020-11-10T22:03:31.075Z] [Job 88] print-darkness=0
D [2020-11-10T22:03:31.075Z] [Job 88] print-quality=draft
D [2020-11-10T22:03:31.075Z] [Job 88] print-scaling='fill'
D [2020-11-10T22:03:31.075Z] [Job 88] print-speed=0
D [2020-11-10T22:03:31.075Z] [Job 88] printer-resolution=600x600dpi
I [2020-11-10T22:03:31.075Z] [Job 88] Loading 3888x5184x1 JPEG image.
D [2020-11-10T22:03:31.214Z] [Job 88] ileft=0, itop=0, iwidth=4960, iheight=7015
I [2020-11-10T22:03:31.214Z] [Job 88] Auto-orientation: portrait
D [2020-11-10T22:03:31.214Z] [Job 88] xsize=5261, xstart=-150, xend=5111, xdir=1, xmod=3888, xstep=0
D [2020-11-10T22:03:31.214Z] [Job 88] ysize=7015, ystart=0, yend=7015, ydir=3888
D [2020-11-10T22:03:31.525Z] [Job 88] Adding options for finishings
D [2020-11-10T22:03:31.525Z] [Job 88] Adding option: PageSize
D [2020-11-10T22:03:31.525Z] [Job 88] Adding option: InputSlot
D [2020-11-10T22:03:31.525Z] [Job 88] Adding option: MediaType
D [2020-11-10T22:03:31.525Z] [Job 88] Adding option: orientation-requested
D [2020-11-10T22:03:31.525Z] [Job 88] Adding option presets depending on requested print quality
D [2020-11-10T22:03:31.525Z] [Job 88] Adding option: print-scaling
D [2020-11-10T22:03:31.525Z] [Job 88] Adding option: Resolution
D [2020-11-10T22:03:31.525Z] [Job 88] Adding option: Duplex
D [2020-11-10T22:03:31.525Z] [Job 88] PPD options to be used: ColorModel=Gray Duplex=None InputSlot=Tray1 MediaType=Plain orientation-requested=3 page-ranges=1-1 PageSize=A4.FullBleed print-scaling=fill Resolution=600dpi
I [2020-11-10T22:03:31.525Z] [Job 88] filterPOpen: Filter function (PID 450904) started.
D [2020-11-10T22:03:31.525Z] [Job 88] Monochrome draft quality job -> 1-bit dithering for speed-up
D [2020-11-10T22:03:31.525Z] [Job 88] Photo/Image-optimized dither matrix
D [2020-11-10T22:03:31.526Z] [Job 88] Monochrome draft quality job -> 1-bit dithering for speed-up
D [2020-11-10T22:03:31.526Z] [Job 88] Photo/Image-optimized dither matrix
I [2020-11-10T22:03:31.947Z] Saving system state to '/tmp/ps_printer_app.state'.
D [2020-11-10T22:03:34.522Z] [Job 88] filterPOpen: Filter function completed with status 0.
D [2020-11-10T22:03:34.524Z] [Job 88] filterPClose: Filter function (PID 450904) exited with no errors.
free(): invalid size

[4]+  Done                    PPD_PATHS=/home/till/printing/openprinting/cups-filters/x/ppdfiles ./ps-printer-app -o log-level=debug server 2>&1 | tee z

"fill" with a landscape image gives double free or corruption (out):
I [2020-11-10T22:20:32.957Z] [Job 89] Starting print job.
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response: IPP/2.0 request-id=2, status-code=successful-ok
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response: operation-attributes-tag
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response:   attributes-charset charset utf-8
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response:   attributes-natural-language naturalLanguage en-us
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response: job-attributes-tag
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response:   job-id integer 89
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response:   job-uri uri ipp://localhost/ipp/print/test/89
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response:   job-state enum pending
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response:   job-state-message textWithoutLanguage Job pending.
D [2020-11-10T22:20:32.957Z] [Client 1] Print-Job response:   job-state-reasons keyword none
test-89
I [2020-11-10T22:20:32.957Z] [Client 1] Closing connection from 'localhost'.
till@till-x1yoga:~/printing/openprinting/ps-printer-app/x$ D [2020-11-10T22:20:33.099Z] [Job 89] Getting options for num_pages=1, color=true
D [2020-11-10T22:20:33.099Z] [Job 89] print-color-mode=monochrome
D [2020-11-10T22:20:33.099Z] [Job 89] header.cupsWidth=4960
D [2020-11-10T22:20:33.099Z] [Job 89] header.cupsHeight=7015
D [2020-11-10T22:20:33.099Z] [Job 89] header.cupsBitsPerColor=8
D [2020-11-10T22:20:33.099Z] [Job 89] header.cupsBitsPerPixel=8
D [2020-11-10T22:20:33.099Z] [Job 89] header.cupsBytesPerLine=4960
D [2020-11-10T22:20:33.099Z] [Job 89] header.cupsColorOrder=0
D [2020-11-10T22:20:33.099Z] [Job 89] header.cupsColorSpace=18 (sGray)
D [2020-11-10T22:20:33.099Z] [Job 89] header.cupsNumColors=1
D [2020-11-10T22:20:33.099Z] [Job 89] header.HWResolution=[600 600]
D [2020-11-10T22:20:33.099Z] [Job 89] num_pages=1
D [2020-11-10T22:20:33.099Z] [Job 89] copies=1
D [2020-11-10T22:20:33.099Z] [Job 89] finishings=0x0
D [2020-11-10T22:20:33.099Z] [Job 89] media-col.bottom-margin=0
D [2020-11-10T22:20:33.099Z] [Job 89] media-col.left-margin=0
D [2020-11-10T22:20:33.099Z] [Job 89] media-col.right-margin=0
D [2020-11-10T22:20:33.099Z] [Job 89] media-col.size=21000x29700
D [2020-11-10T22:20:33.099Z] [Job 89] media-col.size-name='iso_a4_210x297mm'
D [2020-11-10T22:20:33.099Z] [Job 89] media-col.source='tray-1'
D [2020-11-10T22:20:33.099Z] [Job 89] media-col.top-margin=0
D [2020-11-10T22:20:33.099Z] [Job 89] media-col.type='stationery'
D [2020-11-10T22:20:33.099Z] [Job 89] orientation-requested=none
D [2020-11-10T22:20:33.099Z] [Job 89] page-ranges=1-1
D [2020-11-10T22:20:33.099Z] [Job 89] print-color-mode='monochrome'
D [2020-11-10T22:20:33.099Z] [Job 89] print-content-optimize='photo'
D [2020-11-10T22:20:33.099Z] [Job 89] print-darkness=0
D [2020-11-10T22:20:33.099Z] [Job 89] print-quality=draft
D [2020-11-10T22:20:33.099Z] [Job 89] print-scaling='fill'
D [2020-11-10T22:20:33.099Z] [Job 89] print-speed=0
D [2020-11-10T22:20:33.099Z] [Job 89] printer-resolution=600x600dpi
I [2020-11-10T22:20:33.099Z] [Job 89] Loading 4608x3456x1 JPEG image.
D [2020-11-10T22:20:33.228Z] [Job 89] ileft=0, itop=0, iwidth=4960, iheight=7015
I [2020-11-10T22:20:33.228Z] [Job 89] Auto-orientation: landscape
D [2020-11-10T22:20:33.228Z] [Job 89] xsize=5261, xstart=-150, xend=5111, xdir=4608, xmod=3456, xstep=0
D [2020-11-10T22:20:33.228Z] [Job 89] ysize=7015, ystart=0, yend=7015, ydir=-1
D [2020-11-10T22:20:33.536Z] [Job 89] Adding options for finishings
D [2020-11-10T22:20:33.536Z] [Job 89] Adding option: PageSize
D [2020-11-10T22:20:33.536Z] [Job 89] Adding option: InputSlot
D [2020-11-10T22:20:33.536Z] [Job 89] Adding option: MediaType
D [2020-11-10T22:20:33.536Z] [Job 89] Adding option: orientation-requested
D [2020-11-10T22:20:33.536Z] [Job 89] Adding option presets depending on requested print quality
D [2020-11-10T22:20:33.536Z] [Job 89] Adding option: print-scaling
D [2020-11-10T22:20:33.536Z] [Job 89] Adding option: Resolution
D [2020-11-10T22:20:33.536Z] [Job 89] Adding option: Duplex
D [2020-11-10T22:20:33.536Z] [Job 89] PPD options to be used: ColorModel=Gray Duplex=None InputSlot=Tray1 MediaType=Plain orientation-requested=3 page-ranges=1-1 PageSize=A4.FullBleed print-scaling=fill Resolution=600dpi
I [2020-11-10T22:20:33.536Z] [Job 89] filterPOpen: Filter function (PID 451291) started.
D [2020-11-10T22:20:33.536Z] [Job 89] Monochrome draft quality job -> 1-bit dithering for speed-up
D [2020-11-10T22:20:33.536Z] [Job 89] Photo/Image-optimized dither matrix
D [2020-11-10T22:20:33.536Z] [Job 89] Monochrome draft quality job -> 1-bit dithering for speed-up
D [2020-11-10T22:20:33.536Z] [Job 89] Photo/Image-optimized dither matrix
I [2020-11-10T22:20:33.939Z] Saving system state to '/tmp/ps_printer_app.state'.
D [2020-11-10T22:20:38.034Z] [Job 89] filterPOpen: Filter function completed with status 0.
D [2020-11-10T22:20:38.035Z] [Job 89] filterPClose: Filter function (PID 451291) exited with no errors.
double free or corruption (out)

Thank you very much!
I did several tests with "fill", "fit", and "none" printing landscape and portrait photos in draft/gray (which auto-switches to 1-bit dithering in the PS Printer Application) and regular color, all images get printed correctly and the Printer Application keeps running.


autogen is not generating the documentation from controller.ts

I have a project with index.ts, routes/routes.ts and controller/cont.ts. in route.ts
router.post('/pathname',functionname); --functionname from cont.ts
in cont.ts,
inserting the data into mangodb.
just trying to autogenerate swagger.json,  Iam getting empty requestbody
Please help me

Hello  @RajalakshmiRamatchandirane
Can in you add more detail about you issue? Maybe provide some code.
I think we can be experiencing the same issue.

Abri uma Issue imagino que seja o mesmo..
https://github.com/davibaltar/swagger-autogen/issues/204

Hi @RajalakshmiRamatchandirane. Thank you for opening the issue. Sorry for the delay. I couldn't reproduce this problem here. Could you send me a sample project that reproduces this problem, please?
That way is easier to identify and handle the problem.


[SPARK-3873] [examples] Import ordering fixes.

Test build #48681 has started for PR 10575 at commit af01eed.

Test build #48681 has finished for PR 10575 at commit af01eed.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/48681/
Test PASSed.

LGTM - I've merged this. Thanks.


Finished initial gulp file and added new dependencies for gulp

@stevenshuhyow check out http://christianalfoni.github.io/javascript/2014/08/15/react-js-workflow.html and http://christianalfoni.github.io/javascript/2014/10/30/react-js-workflow-part2.html
I think we can use a majority of the gulp tasks from those tutorials.

@kevhuang I would like to use the tutorial as well, but I wish there was code I could test it on.  Currently, I am not uglifying anything.  The only thing I want gulp to do right now is to update changes and run the JSLint.  What do you think?

@stevenshuhyow I don't think we need to write out the entire Gulp file right now. We can start small with linting the server-side JS files and perhaps even using watchify/browserify for building the React files. Then we can progressively add more tasks to the Gulp file.
I have a working Gulpfile for watchify. I can give you the code to incorporate into the Gulpfile or I can add it in one of my pull requests. Let me know what you prefer.
I'm not sure how we should go about linting the React files because they have JSX syntax, so that'll definitely fail the linting, unless there's a plugin we can use.


Avoid building shared libraries + support all upstream-supported platforms

xref: https://github.com/conda-forge/cutlass-feedstock/pull/19#issuecomment-2106557517
Let's get this feedstock unblocked by restoring what CUTLASS is meant to be: A header-only C++ template library. It is too much to build a shared library. It's useless and does not serve for runtime JIT compilation needs. This feedstock should be as simple as cuda-cccl-feedstock and cccl-feedstock (CCCL is also a header-only lib).
I also build support for all Linux & Windows platforms to pave the way for an upcoming NVIDIA release.
I add myself as a maintainer.

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

@conda-forge-admin, please rerender

@conda-forge-admin, please rerender

@conda-forge-admin, please rerender

@conda-forge-admin, please rerender

@h-vetinari this is ready. I spoke with the CUTLASS PM @mnicely, and we are unaware of any libraries that use libcutlass.so. This PR would make things a lot simpler and unblock some of the PRs I am preparing. Could you offer your feedback when you get a chance please (I know you're busy with stdlib & numpy 2 infra changes)? Thanks! 🙂

(FYI there's also CUTLASS wheels are they are lightweight too. The CUTLASS team adds Python support in the wheel, once this PR is merged I can discuss with Matt and try to add an additional output in this feedstock for Python users.)

cc: @conda-forge/cuda (in case anyone has bandwidth to chime in)

@conda-forge/cutlass shall we merge? Once this is merged I can get the lined-up updates done one by one.

@leofang Thanks! Responding to the CUDA team ping — yes, this looks great. If it seems appropriate, we could consider adding the conda-forge/cuda team as maintainers on this feedstock, like we did for CUDA Toolkit feedstocks.

If it seems appropriate, we could consider adding the conda-forge/cuda team as maintainers on this feedstock, like we did for CUDA Toolkit feedstocks.

Sounds like a good idea, I suggest we discuss in the next sync-up. Once we are on board we can make the maintainer change any time, doesn't have to be part of this PR.

@conda-forge-admin, please rerender

Thanks, John! @h-vetinari this is ready :)

Thanks all! 🙏
How would we like to handle updating the version here?
Do we want to just go through these in order?

https://github.com/conda-forge/cutlass-feedstock/pull/14
https://github.com/conda-forge/cutlass-feedstock/pull/19

Or do we just want to jump to latest?

Yes I'll get to them in order after I get to my desk.

No worries. Not trying to add pressure 😌
Just trying to understand how we want to approach updating 🙂


Sass path resolution should allow homeDir

in a directory structure like
packages/
    app/
        main.scss
    core/
        styles/
            colours.scss

I want to be able to @import core/styles/colours.scss from app/main.scss

wrong branch


Helm chart improvements

remove deprecated storage.k8s.io/v1beta1
add namespace values that make sure namespace is included when running helm template
use dynamic $(POD_NAMESPACE) instead of static templated {{ .Release.Namespace }} value (should resolve to same value)

The PR looks good to me, except for I'd like to understand the effect of this change if a user upgrades the csi-driver-spiffe to this version and already has some csi-driver-spiffe volumes

I removed that change, so we can easily merge this PR.

/unhold


enhancement change thread name, whose length is restricted to 15 characters on linux platform

The distinguished thread name can be useful for debugging
Proposed changes
This is the summary of pstack thread name output:

WP stands for WorkThreadPool, implemented in work_thread_pool.hpp
TP stands for ThreadPool, implemented in threadpool.h
BTS stands for BlockedTaskScheduler, implemented in task_scheduler.h
Issue Number: close #32321

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run builddall

run builddall

run buildall

run buildall

run p0

run buildall

run external

run p0

run buildall

run buildall

run buildall

run p0

run p0

run buildall

run p0

run buildall

run buildall

run buildall

run buildall

run buildall


Camera to world transformation

Was wondering if there's an easy or recommended way to get a pixel -> world coordinates transform for an image taken in IPC?

Our simulator used libigl for visualization. You might want to look into libigl's viewer class to get the transformation.


Destructuring function arguments result in TypeError

This works:
function multiplyByTwo(arg){
  return 2 * arg;
}

This does not work:
function multiplyByTwo({ arg }){
  return 2 * arg;
}

I get the following error:
Transpilation failed. TypeError: Cannot read property 'name' of undefined

With this error in the console:
Uncaught TypeError: Cannot read property 'name' of undefined
    at TypeHelper.generateStructure (ts2c.bundle.js:6618)
    at TypeHelper.convertType (ts2c.bundle.js:6601)
    at TypeHelper.getCType (ts2c.bundle.js:6245)
    at ts2c.bundle.js:6519
    at Array.forEach (<anonymous>)
    at TypeHelper.resolveTypes (ts2c.bundle.js:6519)
    at TypeHelper.inferTypes (ts2c.bundle.js:6515)
    at newConstructor.CProgram (ts2c.bundle.js:2713)
    at new newConstructor (ts2c.bundle.js:5608)
    at Object.transpile (ts2c.bundle.js:6805)

It's not important to me that destructuring arguments work, but I couldn't find any info about it in COVERAGE.md. It would save some time debugging if it was added to the coverage document.

Destructuring is a feature of ES6, same as for example arrow functions, const/let, template strings, default parameter values, for..of, etc.
For now I am still working on ES3 support, correspondingly COVERAGE.md only lists features from ES3 spec.
The workaround is of course to transpile from ES6 to ES3 using babel or typescript, but the ultimate goal of this project is to support ES6 features directly (because in this case it is possible to produce a more readable output).
Actually, at least two features from ES6 are already supported, namely for..of and import (the latter will only work in Node.js environment though, not in the browser playground).
But in general, ES6 support is still quite far in the future, so I will close this issue as not relevant for now.


feat: Add tls validation metric and trace pipelines

Description
Changes proposed in this pull request (what was done and why):

Add tls Certificate validation for metrics and traces

Changes refer to particular issues, PRs or documents:

Depends on this PR: https://github.com/kyma-project/telemetry-manager/pull/996
https://github.com/kyma-project/telemetry-manager/issues/930
https://github.com/kyma-project/telemetry-manager/issues/971

Traceability

[x] The PR is linked to a GitHub issue.
[ ] New features have a milestone set.
[ ] New features have defined acceptance criteria in a corresponding GitHub Issue, and all criteria are satisfied with this PR.
[x] The corresponding GitHub issue has a respective area and kind label.
[x] The follow-up issues (if any) are linked in the Related Issues section.
[ ] Adjusted the documentation if the change is user-facing.
[x] The feature is unit-tested
[ ] The feature is e2e-tested

Closing this PR for: https://github.com/kyma-project/telemetry-manager/pull/999


tflite buffer from GPU

This template is for miscellaneous issues not covered by the other issue categories.
For questions on how to work with TensorFlow, or support for problems that are not verified bugs in TensorFlow, please go to StackOverflow.
If you are reporting a vulnerability, please use the dedicated reporting process.
For high-level discussions about TensorFlow, please post to<EMAIL_ADDRESS>for questions about the development or internal workings of TensorFlow, or if you would like to know how to contribute to TensorFlow, please post to<EMAIL_ADDRESS>template
Status GlBuffer::MappedRead(
const std::function<Status(absl::Span d)>& reader) const {
if (bytes_size_ % sizeof(T) != 0) {
return InvalidArgumentError("Buffer is not aligned");
}
gl_buffer_internal::BufferBinder binder(target_, id_);
gl_buffer_internal::BufferMapper mapper(target_, offset_, bytes_size_,
GL_MAP_READ_BIT);
if (!mapper.data()) {
return GetOpenGlErrors();
}
float *data = (float )mapper.data();
for (int i = 0; i < 30; i++) {
__android_log_print(ANDROID_LOG_WARN, "jni-tflite", "value=%f", data[i]);
}
return reader(absl::MakeSpan(reinterpret_cast<const T>(mapper.data()),
bytes_size_ / sizeof(T)));
}
Above code is in gl_buffer.h for read data from gpu to cpu, printed value is all zero for input node as i want to inpect the result is as expected. but output node has non zero values. why ?
Status Invoke(TfLiteContext* context) {
const EGLContext egl_context_at_delegate_init = env_->context().context();
const EGLContext egl_context_at_delegate_invoke = eglGetCurrentContext();
if (egl_context_at_delegate_init != egl_context_at_delegate_invoke) {
return FailedPreconditionError(
"Delegate should run on the same thread where it was initialized.");
}
// Push input data from a tensor to GPU.
for (ValueId id : inputs_) {
  const ValueRef& ref = tensors_[id];
  auto external_object = bhwc_objects_.FindBuffer(ref.tensor_index);
  if (external_object) {
    // Use input from GPU.
    // Conversion is needed only when external object is not phwc4.
    if (!IsPHWC4(tensors_[id].shape)) {
      RETURN_IF_ERROR(bhwc_to_phwc4_.Convert(
          ref.shape, *external_object, command_queue_.get(), external_object   "Note:read data to cpu all is zero!!!?"
          phwc4_objects_.FindBuffer(id)));
    }
  } else {
    // Copy from CPU to GPU
    TfLiteTensor& tensor = context->tensors[ref.tensor_index];
    RETURN_IF_ERROR(CopyToBufferHandle(id, &tensor));
  }
}

// Run inference.
RETURN_IF_ERROR(inference_context_->Reset());
RETURN_IF_ERROR(inference_context_->Execute());

// Push output data from GPU to a tensor.
bool finished_gpu_processing = false;
for (ValueId id : outputs_) {
  const ValueRef& ref = tensors_[id];
  auto external_object = bhwc_objects_.FindBuffer(ref.tensor_index);
  if (external_object) {
    // Convert data from PHWC4 to BHWC and leave it in GPU object.
    // Conversion is needed only when external object is not phwc4.
    if (!IsPHWC4(tensors_[id].shape)) {
      RETURN_IF_ERROR(
          phwc4_to_bhwc_.Convert(ref.shape, *phwc4_objects_.FindBuffer(id),
                                 command_queue_.get(), external_object));
    }
  } else {
    // Wait until all GPU command are completed. This call leads to a lower
    // processing latency because a buffer reading below will not stall if
    // data is not yet ready.
    if (!finished_gpu_processing) {
      RETURN_IF_ERROR(command_queue_->WaitForCompletion());
      finished_gpu_processing = true;
    }
    // Copy from GPU to CPU.
    TfLiteTensor& tensor = context->tensors[ref.tensor_index];
    RETURN_IF_ERROR(CopyFromBufferHandle(id, &tensor));          "#Note:this is output node to print value has non zero value"
  }
}
return OkStatus();

}

@weinixuehao
In order to expedite the trouble-shooting process, please provide a code snippet to reproduce the issue reported here.
Please refer to this doc to know more on the  tflite operations on GPU and let us know if it helps?
Thank you!

somehow i missed this.

Above code is in gl_buffer.h for read data from gpu to cpu, printed value is all zero for input node as i want to inpect the result is as expected. but output node has non zero values. why ?

Could be either of:

lack of GPU/CPU synchronization.  thus, values are not ready, but you're trying to read back, or
buffers for intermediate tensors are re-used, i.e. you can't tap into random intermediate tensor 42.  you need a bit of hack to read from intermediate tensors, e.g. insert an ADD 1e-6 or to the value and then read that.


Compile Error using Clang in FutureExtensionsTypeTraits.h

I get the following error when compiling using Clang:
T:/p4/project/main/MyGame/Plugins/Runtime/ThirdParty/SDFutureExtensions/Source\SDFutureExtensions/Private/FutureExtensionsTypeTraits.h(161,87): error: implicit instantiation of undefined template 'SD::TExpected<void>'
  auto ContinuationFunctorVoidParamTypeHelper(F Func, int, int, ...) -> decltype(Func(ToExpected()), ToExpected());
                                                                                ^
T:/p4/project/main/MyGame/Plugins/Runtime/ThirdParty/SDFutureExtensions/Source\SDFutureExtensions/Private/FutureExtensionsTypeTraits.h(10,8): note: template is declared here
 class TExpected;
       ^
1 error generated.

It seems to be something with the forward declarations of the template types, so it seems to be resolved when adding the import of ExpectedResult.h directly in the file FutureExtensionsTypeTraits.h. There's a lot of really complex template work done in this library so I'm not sure if this is the safest or most correct change, so raising viz here for folks!

There are definitely some issues with the way in which the headers are set up right now, but we do make use of Clang in-house and I haven't seen the issue you have raised. Would it be possible for you to provide an example of your usage that is cause this error to show up?

Hmm, here's some pseudocode of essentially how we use it atm:
#include "ExpectedFuture.h"

SD::TExpectedFuture<TCustomHttpResponse<FHttpResponsePtr>> FCustomHttpRequest::Send()
{
	TSharedPtr<SD::TExpectedPromise<TCustomHttpResponse<FHttpResponsePtr>>> Promise =
		MakeShared<SD::TExpectedPromise<TCustomHttpResponse<FHttpResponsePtr>>>();

	FCustomOnRequestSuccess OnSuccess;
	OnSuccess.AddLambda([Promise](const FHttpResponsePtr Response)
	{
	        // TCustomHttpResponse can be built from a response or a standard error
		Promise->SetValue(Response);
	});

	FCustomOnRequestError OnError;
	OnError.AddLambda([Promise](const FStandardError& Error)
	{
		// TCustomHttpResponse can be built from a response or a standard error
		Promise->SetValue(Error);
	});

        // Essentially sends an HTTP Request
	Send(OnSuccess, OnError);

	return Promise->GetFuture();
}

I don't think there's anything particularly fancy. For what it's worth, our changes we've made to the library so far are:
// In FutureExtensionsTypeTraits.h
// Copyright(c) Splash Damage. All rights reserved.
#pragma once

#include "Templates/IntegralConstant.h"
#include "Runtime/Launch/Resources/Version.h"
// <Modification> Included ExpectedResult.h header to avoid implicit template instantiation clang compile error
#include "ExpectedResult.h"
// </Modification>

This seems to resolve the issue.

The library currently expects that you bring it in with
#include "FutureExtensions.h"
rather than any of the other headers - this is on my TODO list to investigate properly, but has been low priority.
Doing that should remove the need to modify any of the files.
A small note of the code above too - you don't need to MakeShared the promise, as it is internally just a wrapper around a shared pointer itself - copying the promise will still refer to the same object, so it will still be safe to capture by value in the lambdas, though you may need to mark them as mutable.

Awesome! Thanks for the info. That did indeed fix things. I didn't really check for a wrapper header. My bad! Thanks!


ProtoDash: local variable 'newinnerProduct' referenced before assignment

I am using the HELOC Dataset and trying to explain a single test instance using prototypes from my training subset using below code:
explainer = ProtodashExplainer()
(W, S, _) = explainer.explain(dfTrain.to_numpy(), dfTest.iloc[0:1,:].to_numpy(), m=2)
However, I am getting below error:

Is this intentional? Please help.
Thank you

Hi I would really appreciate some feedback please. I am using this library for my disseration and currently stuck due to this issue. Your help will be very much appreciated.

I doubt you can use prototype for single instance. It is a way of sampling the data. Does it make sense to sample single instance ?

It should be possible, because IBM's Arya et al. state in their paper that ProtoDash can be used to explain a single test sample using samples from the train set (https://arxiv.org/pdf/1909.03012.pdf).

ProtoDash [26]: Selects diverse and representative samples that summarize a dataset or explain a test instance. Non-negative importance weights are also learned for each of the selected samples.

So you can explain a single instance but the dataset you use to explain it has to have multiple instances. You cannot have both X and Y have cardinality 1.

Of course, in fact in my code dfTrain contains 7403 instances as shown below:

So then try swapping the arguments. The thing to be explained is to come first. Also check they have the same dimensionality.

Many thanks for your help. Swapping the arguments did the trick.
I followed the below comments in the PDASH.py file of this library so maybe you need to change the explanation there to avoid anyone doing the same mistake.

Awesome! Thanks.


[Event Request] codeunit 80 "Sales-Post" OnPostItemJnlLineOnBeforeTransferReservToItemJnlLine

Please extend the Event OnPostItemJnlLineOnBeforeTransferReservToItemJnlLine with additional parameter:
current:
local procedure OnPostItemJnlLineOnBeforeTransferReservToItemJnlLine(SalesLine: Record "Sales Line"; ItemJnlLine: Record "Item Journal Line"; var CheckApplFromItemEntry: Boolean)
desired:
local procedure OnPostItemJnlLineOnBeforeTransferReservToItemJnlLine(SalesLine: Record "Sales Line"; ItemJnlLine: Record "Item Journal Line"; var CheckApplFromItemEntry: Boolean; var TrackingSpecification: Record "Tracking Specification")

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 40862.


Incorrect context help message

Describe the bug
The help message for context is showing an incorrect context command asyncapi context use mycontext.
error locating AsyncAPI document: Specify what AsyncAPI file to be used.
These are your options to specify in the CLI what AsyncAPI file should be used:
 - You can provide a path to the AsyncAPI file: asyncapi <command> path/to/file/asyncapi
 - You can also pass a saved context that points to your AsyncAPI file: asyncapi <command> context-name
 - In case you did not specify a context that you want to use, the CLI checks if there is a default context and uses it. To set default context run: asyncapi context use mycontext
 - In case you did not provide any reference to AsyncAPI file and there is no default context, the CLI detects if in your current working directory you have files like asyncapi.json, asyncapi.yaml, asyncapi.yml. Just rename your file accordingly.

The file with the error: https://github.com/asyncapi/cli/blob/master/src/errors/context-error.ts

Hey @jonaslagoni, I want to work on this isssue. Please assign it to me.

@jonaslagoni @Souvikns Please review my PR.

is this issue open?


Initial ca

Take this branch and copy it over synthea and it runs!

Added a unit test MatzTest -- Had a bit of a struggle getting the test to run under eclipse debugger.
Hacked around with Debug configuration and finally got it to work. See screeshot
https://photos.app.goo.gl/EMzs7Q2aUD8VcELc7

Hey, with the jacobo stuff gone runs
./gradlew --stacktrace test --tests MatzTest
without error. this is looking good.

ugh. spoke too soon. If I do what I think should be the same run by
./run_synthea Ontario Toronto -s 0 -p 10
I get the failures again:
3 -- Brain142 Doyle959 (14 y/o M) Toronto, Ontario
java.lang.RuntimeException: Unable to find provider: ambulatory
at org.mitre.synthea.world.agents.Person.setProvider(Person.java:618)
at org.mitre.synthea.world.agents.Person.setProvider(Person.java:630)
at org.mitre.synthea.world.agents.Person.getProvider(Person.java:608)
at org.mitre.synthea.world.agents.Person.encounterStart(Person.java:497)
at org.mitre.synthea.modules.EncounterModule.createEncounter(EncounterModule.java:142)
at org.mitre.synthea.engine.State$Encounter.process(State.java:755)
at org.mitre.synthea.engine.State.run(State.java:178)
at org.mitre.synthea.engine.Module.process(Module.java:349)
at org.mitre.synthea.engine.Module.process(Module.java:361)
at org.mitre.synthea.engine.Generator.updatePerson(Generator.java:488)
at org.mitre.synthea.engine.Generator.createPerson(Generator.java:518)
at org.mitre.synthea.engine.Generator.generatePerson(Generator.java:397)
at org.mitre.synthea.engine.Generator.lambda$run$55(Generator.java:316)
at org.mitre.synthea.engine.Generator$$Lambda$29/524606891.call(Unknown Source)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

embarassing.. long,lat reversed in zipcodes.csv messes up provider search. back to square 1.

now even -p 5 fails.
it's failing to find a provider for ANY person. (provider type WELLNESS)

long debug session establishes that provider isn't being found for a person because there isn't one close enough.
Provider provider = Provider.findService(this, type, time);  //returns null

Hmm. hacked.  MAX_PROVIDER_SEARCH_DISTANCE is 32. Increasing it and now runs
presumably this comes from synthea.properties
generate.providers.maximum_search_distance = 32
public static Provider findService(Person person, EncounterType service, long time) {
double maxDistance = 500.0; //MAX_PROVIDER_SEARCH_DISTANCE;
double degrees = 0.125;
List options = null;
Provider provider = null;
while (degrees <= maxDistance) {
options = findProvidersByLocation(person, degrees);
provider = providerFinder.find(options, person, service, time);
if (provider != null) {
return provider;
}
degrees *= 2.0;
}
return null;
}

so now when i run ./run_synthea Ontario Toronto -s 0 -p 100 it fails to find a provider for only three Persons.
the getX() and getY() coords for all these people are very close to Toronto.
So perhaps it's some other aspect of the search that is failing?? veterans? (I tried to fake a veteran facility in toronto just in case)

Now generates 100 phoney Torontonians.

unit test debuggable under eclipse as a "gradle test" so long as set up a sneaky debug configuration.
See screenshot at https://photos.app.goo.gl/YshUGDXztRX5JPSU7


Validate applicationType and authenticationType for valid values

I spent a while researching "what I thought was a bug" because I had authenticationType in my JDL set to JWT and not jwt.
I updated the validators to match what values are listed at https://www.jhipster.tech/jdl/  for applicationType and authenticationType.
Please make sure the below checklist is followed for Pull Requests.

[] Travis tests are green
[X] Tests are added where necessary
[X] Documentation is added/updated where necessary
[X] Coding Rules & Commit Guidelines as per our CONTRIBUTING.md document are followed

Thanks, I'll review it ASAP

These checks shouldn't be done here. The validator only checks for grammar anomalies. I'm going to update the business error checker to add app validation

@MathieuAA Thank you!


tests - shutdown gracefully to enable webview tests

//cc @deepak1556

I actually think this change does not help: https://github.com/microsoft/vscode/runs/440525717#step:14:456


OnTrackChange is not invoked if the new track has the same name as the previous one

While this does not happen often by any means, I have had it occur where I play two songs in a row that have the same name, but are either on different albums or by different artists (a quick look at my Spotify yielded "Closer" by Teagan and Sara and also "Closer" by The Chainsmokers).  This can result in some strange behavior (track info doesn't update, but the progress will change).

Hey,
Should be fixed by ce376a3513e46ba268bc5da8b394de991fd52f2f. I don't know why we were comparing Name instead of Uri. Release will come within the next week :)
Feel free to report further issues @parkerreno !


Remove two decommissioned collections from H2

Please remove collections druid:cx990yg9488 and druid:mp914tb4244 and all their items from H2. These collections have been decommissioned.

Done.


Custom Mechanical Crafting does not work with non-create/vanilla items (4.0.13/1.20.1)

I've scripted a bunch of custom mechanical crafting recipes for a modded server. But when I go to test them, the items are not crafted (ie. all ingredients are spilled out due to the crafting failing). I made sure all of the scripts work right. But I believe this is a createtweaker issue, not a scripting issue. Furthermore, modded items work with other recipe types, such as mixing, blasting, and washing, etc..
Example: Custom Alex's caves nuke recipe

)
Script example:
recipetype:create:mechanical_crafting.addRecipe("nuclear_bomb1", item:alexscaves:nuclear_bomb, [[item:minecraft:air, item:minecraft:air, tag:items:forge:storage_blocks/steel, item:minecraft:air, item:minecraft:air], [item:minecraft:air, item:alexscaves:uranium_rod, item:alexscaves:fissile_core, item:alexscaves:uranium_rod, item:minecraft:air], [item:minecraft:netherite_ingot, item:cbcmodernwarfare:inert_explosives, item:alexscaves:block_of_uranium, item:cbcmodernwarfare:inert_explosives, item:minecraft:netherite_ingot], [item:minecraft:air, item:alexscaves:uranium_rod, item:alexscaves:fissile_core, item:alexscaves:uranium_rod, item:minecraft:air], [item:minecraft:air, item:minecraft:air, tag:items:forge:storage_blocks/steel, item:minecraft:air, item:minecraft:air]]);

Fixed by downgrading to version 4.0.12


[RFC] Checking .terraform.lock.hcl for allowed providers

Currently Digger supports only 2 types of policies:

Plan policy (that's checking plan output)
Access policy (that's checking who can do what, e.g. whether or not an Apply can run)

But what if a  malicious actor tries to run plan using a provider containing a data source with arbitrary code?
Checking the required providers block is not enough; providers can also be referenced by external modules.
More details in the Doordash Engineering blog
Workaround via Inline Policies
Similar to what the Doordash team did with Atlantis - using custom commands and inline policies in the Digger workflow:
workflows:
  with-preplan-conftest:
    plan:
      steps:
        - init
        - run: conftest test \
	    --update s3::https://s3.amazonaws.com/bucket/opa-rules \
	    --namespace terraform.providers .terraform.lock.hcl`
        - plan

However, this approach has the same drawbacks as any other use case for inline policies:

manual scripting of the custom step
policies need to be updated in the S3 bucket separately
no way to nicely show the erros to the user

From Digger perspective, inline policies is just a script; it doesn't know anything about what this script does. So this fixes the security issue, but not in the most helpful way.
Proposed solution A: Lockfile Policy
Digger should support a 3rd kind of policy - Lockfile Policy, alongside the Plan and Access policies in the management repo

Run after terraform init but before both terraform plan and terraform apply
OPA will be passed the contents of .terraform.lock.hcl as lockfile input

Proposed solution B: allowed_providers option in digger.yml
Or maybe policy is an overkill for that; we could just check the .terraform.lock.hcl file directly without using OPA before every plan and apply. It's going to be faster and easier to set up; provider checking looks like the only realistic use case for this anyways. This would be similar to #1252 (Atlantis-style apply_requirements) which we are yet to implement

@ZIJ I like the second option and had been planning on implementing myself if you guys did not.


How to snap to a point on sliding?

Is their any way to snap to a point on this slider ? Also how do we add labels to the snap points like in a step slider ?

Hello @vinay-sayone! Can you please elaborate on what you mean by snapping here? Maybe it's the tapToSeek you are looking for if you're running on iOS?
As for the second question: The feature of having the step indicator visible is reported in #240 and it is something I'm already investigate with plans to implement in the near future.

@BartoszKlonowski Yea I mean if the slider width is divided into 4 parts and moving the thumb from initial position say 0, after a certain position the thumb will stick to position one, similarly past the position 1, it'll stick to 2. So basically there will be no decimal change values it will be sticking to just 1, 2, 3 etc

@vinay-sayone In that case you can just use the step property with proper minimumValue and maximumValue:
<Slider
  step={1}
  value={0}
  minimumValue={0}
  maximumValue={3}
  tapToSeek  // enable tap for iOS platform
/>

This should exactly match the behavior you described.
As for the step indicator - like I mentioned in previous response - this will be implemented at some point in the near future.
Let me know please if this answer your initial question.

@vinay-sayone I'm going to close this for now, but let me know if you have any other questions or issues.


Update functions to merge transactions properly

The mergeTx function was creating the same number of Outputs as Inputs so it was not actually merging.
We decide to either split or merge based on the number of UTXO, and these functions adjust the number. Merging should decrease the number of UTXO by definition as below :
[main(J2TR) INF] UTXO delta: -15

The most basic way (current implementation) is to create a single Transaction with multiple Inputs and a single Output.
Also, filter should have been called in splitTx instead of mergeTx. Its role is to skip splitting Outputs with Amount less than count so we don't end up with Amount(0).

Ready for review.


WSL2 update to V<IP_ADDRESS> on Win11: WSL loses network adapter "vEthernet (WSL)"

Windows Version
Microsoft Windows 11 Enterprise 23H2 [Version 10.0.22631.3880]
WSL Version
WSL-Version: <IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>-microsoft-standard-WSL2
Distro Version
Ubuntu 22.04
Other Software
Docker Desktop V4.32.0 (Windows)
Oracle VirtualBox 7.0.18 r162988
Visual Studio 2022 V17.10.4
Visual Studio Code V<IP_ADDRESS> (Windows)
... and a lot of other software - it´s a developer workstation
Repro Steps
I did the following:

added the Windows feature "Windows Subsystem for Linux" on my workstation
installed the distribution Ubuntu-22.04 in wsl (wsl --install --distribution Ubuntu-22.04)

At this point, the network is still working. I can access remote network resources from the WSL VM and I can find the network adapter "vEthernet (WSL)" in the Windows environment.
wsl --version does not work at this point

perform the WSL update (wsl --update)

Now, network connections from the WSL VM are no longer possible.
The network adapter "vEthernet (WSL)" is missing in the Windows environment.

This behaviour is reproducible. Unfortunately, it is very time-consuming, as the entire WSL system (including Windows features) has to be deleted and reinstalled each time.
Expected Behavior
My expectation is that network access will continue to work after the update of the WSL system (step 3).
Actual Behavior
Network access from the WSL VM is not possible.
Available interfaces:
fwidmann@nbm0306:/mnt/c/WSL$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet <IP_ADDRESS>/32 brd <IP_ADDRESS> scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:15:5d:8d:c4:39 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether fc:5c:ee:cd:44:bd brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether f4:a8:0d:c0:e0:80 brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/22 brd <IP_ADDRESS> scope global noprefixroute eth2
       valid_lft forever preferred_lft forever
    inet6 fe80::9c3b:ac53:df7d:df4a/64 scope link nodad noprefixroute
       valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:17 brd ff:ff:ff:ff:ff:ff
6: eth4: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:e0:4c:08:0d:ff brd ff:ff:ff:ff:ff:ff
7: loopback0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:10:e1:41 brd ff:ff:ff:ff:ff:ff
8: eth5: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether e4:c7:67:f9:23:d8 brd ff:ff:ff:ff:ff:ff

IP routing
fwidmann@nbm0306:/mnt/c/WSL$ ip r
default via <IP_ADDRESS> dev eth2 proto kernel metric 25
<IP_ADDRESS>/22 dev eth2 proto kernel scope link metric 281
<IP_ADDRESS> dev eth2 proto kernel scope link metric 25

But no network access
fwidmann@nbm0306:/mnt/c/WSL$ ping -c 2 -4 <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.
From <IP_ADDRESS> icmp_seq=1 Destination Host Unreachable
From <IP_ADDRESS> icmp_seq=2 Destination Host Unreachable

--- <IP_ADDRESS> ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1000ms
pipe 2

Try to access the Ubuntu archive:
fwidmann@nbm0306:/mnt/c/WSL$ wget -dS http://archive.ubuntu.com
Setting --server-response (serverresponse) to 1
URI encoding = ‘UTF-8’
Converted file name 'index.html' (UTF-8) -> 'index.html' (UTF-8)
--2024-07-23 14:56:19--  http://archive.ubuntu.com/
Resolving archive.ubuntu.com (archive.ubuntu.com)... <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>, ...
Caching archive.ubuntu.com => <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> 2620:2d:4000:1::101 2620:2d:4002:1::101 2620:2d:4002:1::103 2620:2d:4002:1::102 2620:2d:4000:1::103 2620:2d:4000:1::102
Connecting to archive.ubuntu.com (archive.ubuntu.com)|<IP_ADDRESS>|:80... Closed fd 3
failed: No route to host.
Connecting to archive.ubuntu.com (archive.ubuntu.com)|<IP_ADDRESS>|:80... Closed fd 3
failed: No route to host.
[...]
Releasing 0x0000562542deda70 (new refcount 1).

Windows host: list of network adapters
The adapter "vEthernet (WSL)" is missing!
PS C:\WSL> Get-NetAdapter -Name "v*" -IncludeHidden | Format-List

Name                       : VirtualBox host-only
InterfaceDescription       : VirtualBox Host-Only Ethernet Adapter
InterfaceIndex             : 23
MacAddress                 : 0A-00-27-00-00-17
MediaType                  : 802.3
PhysicalMediaType          : 802.3
InterfaceOperationalStatus : Up
AdminStatus                : Up
LinkSpeed(Gbps)            : 1
MediaConnectionState       : Connected
ConnectorPresent           : False
DriverInformation          : Driver Date 2024-05-02 Version <IP_ADDRESS>88 NDIS 6.0

Name                       : vSwitch (FSE Switch)
InterfaceDescription       : Hyper-V Virtual Switch Extension Adapter #2
InterfaceIndex             : 99
MacAddress                 :
MediaType                  : 802.3
PhysicalMediaType          : Unspecified
InterfaceOperationalStatus : Up
AdminStatus                : Up
LinkSpeed(Gbps)            : 10
MediaConnectionState       : Connected
ConnectorPresent           : False
DriverInformation          : Driver Date 2006-06-21 Version 10.0.22621.1 NDIS 6.83

Name                       : vEthernet (FSE HostVnic)
InterfaceDescription       : Hyper-V Virtual Ethernet Container Adapter
InterfaceIndex             : 103
MacAddress                 : 00-15-5D-45-29-0F
MediaType                  : 802.3
PhysicalMediaType          : Unspecified
InterfaceOperationalStatus : Up
AdminStatus                : Up
LinkSpeed(Gbps)            : 10
MediaConnectionState       : Connected
ConnectorPresent           : False
DriverInformation          : Driver Date  Version

Name                       : vEthernet (Default Switch)
InterfaceDescription       : Hyper-V Virtual Ethernet Adapter
InterfaceIndex             : 27
MacAddress                 : 00-15-5D-19-BB-A7
MediaType                  : 802.3
PhysicalMediaType          : Unspecified
InterfaceOperationalStatus : Up
AdminStatus                : Up
LinkSpeed(Gbps)            : 10
MediaConnectionState       : Connected
ConnectorPresent           : False
DriverInformation          : Driver Date  Version

Name                       : vSwitch (Default Switch)
InterfaceDescription       : Hyper-V Virtual Switch Extension Adapter
InterfaceIndex             : 6
MacAddress                 :
MediaType                  : 802.3
PhysicalMediaType          : Unspecified
InterfaceOperationalStatus : Up
AdminStatus                : Up
LinkSpeed(Gbps)            : 10
MediaConnectionState       : Connected
ConnectorPresent           : False
DriverInformation          : Driver Date 2006-06-21 Version 10.0.22621.1 NDIS 6.83

Diagnostic Logs
I glady provide further information. However, I need your support for this.
I am a senior software developer but still a complete beginner in terms of WSL or Hyper-V.

What is the second task that seems to be missing here?

Solved! That was a mistake on my part.
I had mentally located the .wslconfig file in the Linux environment - a file name beginning with a dot historically belongs in the *nix world, but not in the Windows world.
That's why I always edited this file in my WSL VM - only once was it created in the Windows UserProfile. And then this file with the entry networkingMode=mirrored was in my UserProfile ... which understandably resulted in no network interface being created, ...


Some confusion in your visualization TensorBoard

When I train model FastPitch from NVIDIA source code, I have the same images like yours,
My train data is 11239 and validation is 1000,
I have seen that the train line and val line more and more separate it others. It seems not common
Are your models really output a speech or not? I feel so confused?
Thank you for sharing the code <3

I am not sure of the meaning of the sentence "Are your models really output a speech or not?"
The output of my FastSpeech2 implementation is a mel-spectrogram, which can be conversed to wavfiles by vocoders such as WaveGlow and MelGAN.
If you are asking that why there is a large gap between the training and validation mel_loss and mel_postnet_loss curves, it is because that in evaluate.py the model synthesizes mel-spectrograms without ground-truth F0 and energy labels.
https://github.com/ming024/FastSpeech2/blob/172d2ea9a03b8dc6751388bacc26c15c801cbb4d/evaluate.py#L63-L64

closed #4


makeStyles hook fired every time

The hook is firing the render all the times even if there is not changes, when using memo for example and using this hook.
this is in last next beta release

[ ] The issue is present in the latest release.
[ ] I have searched the issues of this repository and believe that this is not a duplicate.

  Output from `npx @material-ui/envinfo` goes here.

It doesn't look like this bug report has enough info for one of us to reproduce it.
Please provide a CodeSandbox (https://material-ui.com/r/issue-template-next), a link to a repository on GitHub, or provide a minimal code example that reproduces the problem.
Here are some tips for providing a minimal example: https://stackoverflow.com/help/mcve

There is an issue with this hook that is breaking everything related to it. I believe they changed the directory where it resides.
It's breaking my template and also node modules. Notistack specifically.

You only have to make a component memoized and out this hook inside of that component every time something happen in react this hooks is fired like there is something new and there is nothing new.
there is other issues related to this.

@alvamanu take a look on https://next.material-ui.com/guides/migration-v4/#main-content for how to migrate to v5.

You only have to make a component memoized and use this hook inside of that component every time something happen in react this hooks is fired like there is something new and there is nothing new.

Again, please provide a codesandbox, I understand that for you it's just few lines of code, but for us is one of many issues that we need to debug/take a look on, so we need to have a clear reproduction to be able to start looking in the issue.

there is other issues related to this.

We simply cannot act on comment like this without any description or reproduction.

Works as expected renders because of the nested object which does a shallow comparison of props and rerenders component example.
If I pass primitive type as value example it won't render because shallow comparison works.
Even if you remove the hook you gonna have the same results @alvamanu or provide a proper example with your problem because it is mostly related to the React itself.

Sorry I wasn’t more specific. It works with npm. It doesn’t work with yarn.
To the devs of this project, please be more specific with the location of your hooks. This was a problem that could’ve taken me back 5 months of progress.

Works as expected renders because of the nested object which does a shallow comparison of props and rerenders component example.
If I pass primitive type as value example it won't render because shallow comparison works.
Even if you remove the hook you gonna have the same results @alvamanu or provide a proper example with your problem because it is mostly related to the React itself.

Maybe is a react problem, I will send a example let me have time to reproduce this


local_position_estimator and position_estimator_inav basic support or deprecation

Currently EKF2 (ecl/EKF) is the default estimator for all platforms, but we still have the local_position_estimator (LPE), and position_estimator_inav in tree. Likely both still have small (stubborn?) user base.
LPE can be enabled with the SYS_MC_EST_GROUP parameter.
I feel strongly that we either need to add a minimal support baseline for these estimators (simple testing) or start deprecating them. We're not helping users or the perception of PX4 in general by dragging things along that are unsupported, and quite possibly unsafe to use.
Options

Minimal baseline for upstream inclusion

simple SITL tests
occasional flight test
volunteer willing to commit to reviewing all LPE and INAV labelled issues
(later) new c++ interface to enforce estimator publishing requirements.

example: many parts of the system use the sensor_bias (https://github.com/PX4/Firmware/blob/master/msg/sensor_bias.msg) message, but neither LPE or INAV publish it.

Begin deprecation

move to examples
remove or modify SYS_MC_EST_GROUP parameter to prevent direct user usage
delete entirely after a major release or two in examples

We've dropped position_estimator_inav.


Add new zero phase elliptic filter

This closes issue 77 (Shrink status window) and issue 75 (Enhance IIR elliptical filter) by creating a new elliptical filter that designs an IIR elliptical filter with zero phase.  It updates all of the filter response displays for the new filter.  It also can write out a custom text file that defines the filter design; this text file can be read by an outside filter application program to apply the filter to a saved signal data file.

Great job! I merged the PR locally and pushed it to master.


update jsonpath docs to include negative indices

Related PR: https://github.com/kubernetes/kubernetes/pull/48778
Adds mention of negative index use (support for these is added in the linked PR).

Thanks @juanvallejo for this PR! However, this repo is for Chinese language version of the docs. Can you please send a PR to the upstream?
https://github.com/kubernetes/website/blob/master/docs/reference/kubectl/jsonpath.md
Once your coming PR in upstream is merged, this repo will update accordingly :)
/cc @markthink

@xiangpengzhao thanks, opened PR upstream: https://github.com/kubernetes/website/pull/6662

Thanks @juanvallejo !


feat(datasets): Add file_format to geopandas.GeoJSONDataset

Description

Geopandas supports reading parquet and feather files since version 0.8.0. These offer performance improvements over classical file types, such as .geojson or .shp.zip (supported by geopandas.GeoJSONDataset). We have used a private implementation for some time, but want to contribute them to kedro-datasets. This PR closes  https://github.com/kedro-org/kedro-plugins/issues/196.
Development notes

Extended the implementation of geopandas.GeoJSONDataset with an optional file_formatparameter which is needed to use custom read_* and to_* methods.
Checklist

[x] Opened this PR as a 'Draft Pull Request' if it is work-in-progress
[x] Updated the documentation to reflect the code changes
[x] Added a description of this change in the relevant RELEASE.md file
[x] Added tests to cover my changes

If the implementation is okay, I can add the feather dataset in the same PR or open a new one.

Some pysparks tests are failing. But I think they are unrelated to my changes.

Thanks for this contribution @harm-matthias-harms ! One question: do you think we could have some sort of geopandas.GenericDataset, like we do for pandas and Polars? (Just so that we avoid proliferation of datasets)

To be honest, that would be my preferred solution as well. The current approach feels like a lot of duplicated boilerplate. I really like the Polars dataset and will try to modify the GeoJSON dataset tomorrow to make it work more generally.

My worry is that GeoJSONDataset is no longer GeoJSON-exclusive. So I'm wondering if we should more or less take the code you created here, but put it in a geopandas.GenericGeoDataset, and leave geopandas.GeoJSONDataset alone.

@astrojuanlu I see two options:

GeoJSON is also not GeoJSON exclusive today because I can read many more formats than geojson with read_file.
We create a GenericDataset (this fixes the naming and offers the same functionality and more ) and deprecate the GeoJSONDataset to remove it in some future major versions. Then we don't have to maintain the same dataset twice in the future.

Please tell me how you would like to proceed here.

GeoJSON is also not GeoJSON exclusive today because I can read many more formats than geojson with read_file.

Hah, true... I see this wasn't discussed in https://github.com/kedro-org/kedro/pull/190 originally.
I'm actually in favour of having a new dataset with a more generic name and deprecate the old one, but wondering if the churn is worth the advantages. Any thoughts @merelcht @noklam ?

I'm actually in favour of having a new dataset with a more generic name and deprecate the old one, but wondering if the churn is worth the advantages. Any thoughts @merelcht @noklam ?

We can just remove the old one and add a new one with a generic name in a breaking release. I don't think it's worth the effort of doing a non-breaking release with a deprecation warning first and then remove the old one in the next breaking release just for this one dataset.

Let's proceed that way then 👍🏼 @harm-matthias-harms are you willing to update the PR accordingly? Namely:

just remove the old one and add a new one with a generic name in a breaking release.

@astrojuanlu I updated the PR. Since I merged main the tests have been failing. It looks like a fsspec problem. I don't know much about ffspec, maybe you have a good idea of how to fix this.
Last successful run: https://github.com/kedro-org/kedro-plugins/actions/runs/10593320929/job/29354563096?pr=812
First run that failed: https://github.com/kedro-org/kedro-plugins/actions/runs/10719091250/job/29722424013?pr=812

I do not know.
Does geopandas handle remote filepaths? Like, if we do geopandas.read_{self._file_format}("s3://...") directly without
https://github.com/harm-matthias-harms/kedro-plugins/blob/9e88c5ee0284865b1256a5667bd6f7b691ddb3f7/kedro-datasets/kedro_datasets/geopandas/generic_dataset.py#L155-L156
will it work?

@astrojuanlu This was also a thought I had, but that currently makes more tests fail, and it may be better to have all datasets similar. I don't know why the CI fails.
pytest kedro_datasets/geopandas/generic_dataset.py --doctest-modules --doctest-continue-on-failure and pytest tests/geopandas/test_generic_dataset.py both pass locally with python 3.12. It looks like I have to investigate the CI a bit more. I hope I find some time at the end of the week for that.

Thanks for your patience! Let us know how it goes

@astrojuanlu This was also a thought I had, but that currently makes more tests fail, and it may be better to have all datasets similar. I don't know why the CI fails.
pytest kedro_datasets/geopandas/generic_dataset.py --doctest-modules --doctest-continue-on-failure and pytest tests/geopandas/test_generic_dataset.py both pass locally with python 3.12. It looks like I have to investigate the CI a bit more. I hope I find some time at the end of the week for that.

It has to do with the docstring part and seems to affect python 3.10 specifically. I'm able to replicate the error locally, but haven't found what's wrong yet.

@astrojuanlu I figured out the problem... I also bumped geopandas to v1. They use pyogrio as the new default over fiona. pyogrio does not yet support an alternate file system like fsspec (https://github.com/geopandas/pyogrio/issues/430). There are workarounds using buffers, but the simplest way would be to change the used engine to fiona until pyogrio supports fsspec.

@astrojuanlu, do you wanna add anything before we merge?


Connect to host port 22: Connection refused

General information

OS: RHEL8
Hypervisor: KVM

CRC version
CodeReady Containers version: 1.14.0+36ad776
OpenShift version: 4.5.4 (embedded in binary)

I'm pretty sure this is my own doing however I need some help fixing this.
My host is a RHEL 8 machine.
I'm running CRC on that.
At the same time, I'm running another VM with my test client in Ubuntu 16.04. We can't run this on RHEL.
Problem 1:
When I try to create the Ubuntu VM on the same network as crc (network=crc) I never get an IP assigned.
Therefore I'm running Ubuntu on the default network.
Problem 2:
Connecting to CRC from my Ubuntu VM has issues. First the subnet. For that I have added a route option like below.
The route change seems to be working since traceroute returns success.
However ssh'ing into CRC seems to be blocked.
Is there a firewall rule or something on the CRC Vm that needs to be adjusted here?
[root@SPE-SAG4HP-43 ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 2     crc                            running
 19    vsts-agent                     running

[root@SPE-SAG4HP-43 ~]# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 crc                  active     yes           yes
 default              active     yes           yes

[root@SPE-SAG4HP-43 ~]# virsh domifaddr crc
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:fd:fc:07:21:82    ipv4         <IP_ADDRESS>/24

[root@SPE-SAG4HP-43 ~]# virsh domifaddr vsts-agent
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet1      52:54:00:41:aa:4b    ipv4         <IP_ADDRESS>/24

[root@SPE-SAG4HP-43 ~]# ssh -i ~/.ssh/id_rsa<EMAIL_ADDRESS>Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-187-generic x86_64)

ubuntu@vsts-agent:~$ ip route show
default via <IP_ADDRESS> dev ens3
<IP_ADDRESS>/24 via <IP_ADDRESS> dev ens3
<IP_ADDRESS>/24 dev ens3  proto kernel  scope link  src <IP_ADDRESS>
<IP_ADDRESS>/24 via <IP_ADDRESS> dev ens3

ubuntu@vsts-agent:~$ !trace
traceroute -p 22 <IP_ADDRESS>
traceroute to <IP_ADDRESS> (<IP_ADDRESS>), 64 hops max
  1   <IP_ADDRESS>  0.779ms  0.086ms  0.095ms
  2   <IP_ADDRESS>  0.138ms  0.053ms  0.051ms

# failing to connect from Ubuntu vm
ubuntu@vsts-agent:~$ ssh -i ~/.ssh/id_rsa<EMAIL_ADDRESS>ssh: connect to host <IP_ADDRESS> port 22: Connection refused

# successful connection from the host:
[root@SPE-SAG4HP-43 ~]# ssh -i /home/jesaremi/.crc/machines/crc/id_rsa<EMAIL_ADDRESS>Red Hat Enterprise Linux CoreOS 45.82.202007240629-0
  Part of OpenShift 4.5, RHCOS is a Kubernetes native operating system
  managed by the Machine Config Operator (`clusteroperator/machine-config`).

When I try to create the Ubuntu VM on the same network as crc (network=crc) I never get an IP assigned.
Therefore I'm running Ubuntu on the default network.

This is because crc network doesn't have dhcp range defined like default network have, so to use crc network you can edit it and add the range something like and then you should get IP to your ubuntu VM.
<network connections='1'>
  <name>crc</name>
  <uuid>49eee855-d342-46c3-9ed3-b8d1758814cd</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='crc' stp='on' delay='0'/>
  <mac address='52:54:00:fd:be:d0'/>
  <ip family='ipv4' address='<IP_ADDRESS>' prefix='24'>
    <dhcp>
      <range start="<IP_ADDRESS>" end="<IP_ADDRESS>"/>
      <host mac='52:fd:fc:07:21:82' ip='<IP_ADDRESS>'/>
    </dhcp>
  </ip>
</network>

Is this behavior intended? Is there a way to have a happy median here?

Yes we do check exactly how the network definition looks, if you want to avoid this check then use crc config set skip-check-crc-network true and then this check will be ignored and it should work.

@jeffsaremi Does this above workaround able to solve the issue?

Sorry for the delay. I haven't got a chance to test this. But I'm pretty sure it'll solve my problem.


Document the exact HTTP flow when trying to access data behind earthdata login

We made an attempt at this in https://hackmd.io/T73AtFTnS4C_Ez9JfGNldA.
The goal is to try to describe exactly the HTTP requests and responses that happen whenever we try to access earthdata login protected data. This can and does differ based on the following criteria:

Location of the client making the request (AWS us-west-2 or not seems to be the primary differentiator)
Wether the data is on AWS or out of AWS
Particular DAACs hosting the data and choices they have made
The application responsible for doing the OAuth2 flow between the source of the data and earthdata - this could be TEA, Cumulus, or anything else really.

Doing this at the HTTP protocol layer really helps us understand where problems are and how we can solve them - not just in python, but in all other languages.

Requests, auth, etc. is all a bit of a black box to me, but I'm trying to use earthaccess to get the proper credentials to then order/download ICESat-2 data (for within icepyx). I can log in with earthaccess, but try as I might, I cannot figure out how to pass that authentication to NSIDC's EGI (the ICESat-2 subsetter, [capability url](capability_url = f"https://n5eil02u.ecs.nsidc.org/egi/capabilities/ATL06.005.xml")). So far, everything I've tried results in a 401 authentication error (or simply no content in the response). I have no idea if I'm somehow not passing credentials correctly or if it really is somehow not accepting my credentials. Happy to try and note this here or elsewhere as a use case, and would appreciate any feedback on what to try.


BUG: Flipkart logo colliding with profile page

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
flipkart logo collides with profile sigin up form. I can solve this issue.
Please assign this to me under GSSoC'24.

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

can you pls assign this to me I have worked on this types of issues in my hackathon project I was the web designer so I'm expecting this issue can be resolved easily by me.

@arghadipmanna101 Please assign me this issue

I kindly request to be assigned to this issue. As a Technical Executive at the IEEE CUIET Organization, I am well-positioned to address this matter. I am committed to delivering optimal results and have prior experience with similar projects, which I believe will enable me to make a meaningful contribution.
reference for prior work / projects :-|
https://www.linkedin.com/in/akshit-verma-596a0824b/


Conjur init returns -1 unexpected EOF

Summary
When running conjur init on self-signed/expired certificate, we receive non-informative error

Steps to Reproduce
Steps to reproduce the behavior:
See image above
Expected Results
If we don't support self-signed we should return a meaningful error.
or at least specify the resolution - --insecure
Actual Results (including error logs, if applicable)
See image above
Reproducible

[x ] Always
[ ] Sometimes
[ ] Non-Reproducible

Version/Tag number
Environment setup
Additional Information

Duplicate to https://ca-il-jira.il.cyber-ark.com:8443/browse/ONYX-10129


Not getting notification when giving path.

Hi everyone
I am writing an application in which I want to get notification of a particular node present in the yang model for that I am giving a path in my code that I am mentioning down but the issue is in the path due to which error is coming please give a solution for this. I am attaching the yang node for which I want notification and path I am giving.
Yang model : o-ran-laa-operations.yang
path for notification as macro :
#define laa_notif      "/o-ran-laa-operations:measurement-result"
#define laa_notif_node1 laa_notif "/band-result[band-number='BAND_46_SUBBAND_A']"
#define laa_notif_node2 laa_notif_node1 "/measurement-success"
#define laa_notif_node3 laa_notif_node1 "/failure-message"

Node :
leaf failure-message {
      when "../measurement-success='false'";
      type enumeration{
        enum TIMEOUT {
          description "Timed out waiting for measurement completion.";
        }
      }
      description "This value indicates the detailed error message for failure of the measurement at O-RU.";
    }

Please learn to include relevant information in these issues and do not create duplicates. The very least, you could have included the error message you got but based on that you should know what the problem is. So you probably do not see it, if you have this code in a sysrepo callback. If you put ly_log_options(LY_LOLOG | LY_LOSTORE); at the beginnig of your callback and ly_log_options(LY_LOSTORE); at the end, you should see the message.


Stopping propagation when click backdrops

Description of changes:
In closeBackdrop method, Added stopPropagation(), and preventDefault() to prevent click though the backdrop in MOBILE view.
Related issues (if any):
Checks:

[x] Please confirm yarn run lint ran successfully
[x] Please confirm that only /src and /examples/src are committed
[ ] [if new feature] Please confirm that documentation was added to the README.md

Should no longer be an issue.


Added webpack-bundle-analyzer script

...also yarn.lock.

Codecov Report

Merging #2912 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master   #2912   +/-   ##
======================================
  Coverage     100%    100%
======================================
  Files          67      67
  Lines        1395    1395
======================================
  Hits         1395    1395

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0e36085...de165c4. Read the comment docs.