Connection.end never calls callback when connected through an SSH tunnel

I'm trying to use node-mysql to connect to an AWS RDS instance that's only reachable from EC2 instances within the same VPC.  My specific use case is allowing a CI tool such as Codeship to run DB migrations before deploying new builds.  Since the Codeship hosts don't have access to my DB instance, it will have to tunnel through one of my EC2 instances.  This works like a charm, and I can execute queries against the DB fine, but when I try to close the connection, the callback is never called.  Since I need to close the tunnel after the db connection is closed, the script hangs.  I'm able to repro this with the following code (ssh/db config changed).
var Tunnel = require('tunnel-ssh'),
    mysql = require('mysql');

var Tunnel = new Tunnel({
  remoteHost: "dbHost",
  remotePort: 3306,
  localPort: 33333,
  sshConfig: {
    host: "sshHost",
    username: "ec2-user",
    privateKey: require('fs').readFileSync("/path/to/private/key")
  }
});

Tunnel.connect(function(err) {
  if (err) {
    return console.log(err);
  }
  var conn = new mysql.createConnection({
    host: '<IP_ADDRESS>',
    port: 33333,
    database: "database",
    user: "dbUser",
    password: "dbPass"
  });

  conn.end(function(err) {
    console.log("END");
  });
});

I was able to follow the stack into the Quit sequence, but couldn't find where the problem was happening.  Let me know if you need any more info, or if you think this is a problem on the tunnel-ssh side.
Thanks,
Jared

Hm, I'm not sure. I would even say maybe pasting the following information (probably as a Gist) may help us here:

Add debug: true to the mysql.createConnection options.
Start your script with the environment NODE_DEBUG=net

Then paste the stuff starting from when you see a line that shows the end packet is being sent to the MySQL server to the end of the log. That may help us a lot :)

does it normally work without tunnel?
COM_QUIT does not return confirmation packet, so there is no OK or Error packet for Sequence class to wait - I'm not sure if end() callback work at all.

The end() callback works here--what we do is send COM_QUIT and then we'll call the callback if the connection is ended, but it has to actually be ended graceful with a proper TCP tear-down (i.e. Node.js has to actually know the remote site ended the TCP connection). The only reason the callback wouldn't be called is if the remote (or an intermediary) is not forwarding the ending FIN-ACK handshakes.

@dougwilson Thanks for the quick response. Debug output is below.
@sidorares Yeah I've tested it connecting to localhost DB without a tunnel.
/usr/local/bin/node mysqltest.js
NET: 22508 _read
NET: 22508 _read wait for connection
NET: 22508 connect: find host <IP_ADDRESS>
NET: 22508 afterConnect
NET: 22508 _read
NET: 22508 Socket._read readStart
NET: 22508 afterWrite 0 { domain: null, bytes: 22, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 0 21 21
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 648, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 32 1448 1480
NET: 22508 got data
NET: 22508 _read
NET: 22508 onread undefined 1488 96 1584
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 272, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 1584 848 2432
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 16, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 afterWrite 0 { domain: null, bytes: 32, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 afterWrite 0 { domain: null, bytes: 16, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 2432 48 2480
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 352, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 afterWrite 0 { domain: null, bytes: 16, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 2480 320 2800
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 624, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 afterWrite 0 { domain: null, bytes: 16, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 2800 32 2832
NET: 22508 got data
NET: 22508 _read
NET: 22508 listen2 <IP_ADDRESS> 33333 4 false
NET: 22508 _listen2: create a handle
NET: 22508 bind to <IP_ADDRESS>
NET: 22508 connect: find host <IP_ADDRESS>
NET: 22508 _read
NET: 22508 _read wait for connection
NET: 22508 afterConnect
NET: 22508 _read
NET: 22508 Socket._read readStart
NET: 22508 onconnection
NET: 22508 _read
NET: 22508 Socket._read readStart
NET: 22508 afterWrite 0 { domain: null, bytes: 112, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 afterWrite 0 { domain: null, bytes: 16, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 2832 48 2880
NET: 22508 got data
NET: 22508 _read
NET: 22508 onread undefined 2880 128 3008
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 82, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 3008 82 3090
NET: 22508 got data
NET: 22508 _read
<-- HandshakeInitializationPacket
{ protocolVersion: 10,
serverVersion: '5.6.21-log',
threadId: 19765,
scrambleBuff1: <Buffer 32 50 7b 3f 63 55 61 66>,
filler1: <Buffer 00>,
serverCapabilities1: 65535,
serverLanguage: 8,
serverStatus: 2,
serverCapabilities2: 49279,
scrambleLength: 21,
filler2: <Buffer 00 00 00 00 00 00 00 00 00 00>,
scrambleBuff2: <Buffer 5d 22 30 66 36 78 7d 29 52 41 2e 62>,
filler3: <Buffer 00>,
pluginData: 'mysql_native_password',
protocol41: true }
--> ClientAuthenticationPacket
{ clientFlags: 455631,
maxPacketSize: 0,
charsetNumber: 33,
filler: undefined,
user: 'dbuser',
scrambleBuff: <Buffer 35 a3 9d 26 8d d9 88 7f 3e 6f 36 84 29 8f 3d c1 d6 2e 80 97>,
database: 'ebdb',
protocol41: true }
NET: 22508 afterWrite 0 { domain: null, bytes: 70, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 3104 70 3174
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 96, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 afterWrite 0 { domain: null, bytes: 16, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
<-- OkPacket
{ fieldCount: 0,
affectedRows: 0,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }
--> ComQuitPacket
{ command: 1 }
NET: 22508 onread undefined 3184 48 3232
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 11, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 3232 11 3243
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 5, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 3248 5 3253
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 32, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 afterWrite 0 { domain: null, bytes: 16, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 3264 32 3296
NET: 22508 got data
NET: 22508 _read
NET: 22508 afterWrite 0 { domain: null, bytes: 16, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 afterWrite 0 { domain: null, bytes: 16, oncomplete: [Function: afterWrite] }
NET: 22508 afterWrite call cb
NET: 22508 onread undefined 3296 32 3328
NET: 22508 got data
NET: 22508 _read
Process finished with exit code 130 (when I killed the script)

Thank! So the Node.js log definitely shows it just hanging there--the TCP connection was never cleanly shutdown. With that log, I would definitely look into tunnel-ssh to see if that's the issue, because Node.js doesn't think the remote has closed down the MySQL TCP connection.

It doesn't seem like tunnel-ssh is on GitHub for me to look at it's source code.

I just installed tunnel-ssh and the main issue I see is that it installed a really, really old version of the ssh2 module. Perhaps if that dependency is updated it may fix the issue?

I manually updated to the latest ssh2, but that didn't fix the issue.  Here is the github repo btw: https://github.com/Finanzchef24-GmbH/tunnel-ssh.  I'll take a look at the code after work, and I'll cross-reference this issue on the tunnel-ssh repo.

Awesome. I'm also leaving this issue open, because I still don't know exactly what is going on, so until we have a definitive answer, it's still unresolved in my mind :)

Hey guys thanks for reporting. I think i got the problem fixed in the next major version.
You may crosscheck https://github.com/Finanzchef24-GmbH/tunnel-ssh/blob/release/1.0.0/example/mysql.js
Thanks for reporting.

Awesome, thanks, @agebrock !


Integration with the WooCommerce Subscriptions

Hi! It looks like you support the recurring payments (https://developers.payu.com/en/recurring.html). Is there any chance this plugin will be compatible with the WooCommerce Subscriptions (https://woocommerce.com/document/subscriptions/) anywhere shortly?

It's been a year since filing this suggestion; do you have any plans for supporting this?


Appear animation

Hello.
Is it possible to animate appearance of material icon. I want to animate a situation when there was no icon in toolbar and animate, for example, appearance of arrow button.

I would suggest getting the underlying MaterialMenuDrawable reference using MaterialMenu.getDrawable() and animating the alpha property using a ObjectAnimator.

What about slide in animation, like in Gmail app when you select multiple letters?

That isn't currently possible on MaterialMenuDrawable api.
You could animate the translation of the whole view that is holding the Drawable though.

Yeah, but it will be great if you add this feature in future releases.

Will not be implemented since it can be achieved using View animation framework


JIT-Compile DataFusion Expressions to create RecordBatches

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
We should be able to compile.
The benefit of this is that we can speed up complex / nested expressions by avoiding unnecesarry allocations
Describe the solution you'd like
We should be able to take in a collection of a RecordBatch / named Arrays and compile an expression like (a + b)/ 2 to a loop that results in a new Array.
fn compile(schema: SchemaRef, expr: Expr) ->  CompiledFunction {

}

The loop itself also must be included in the to-be compiled expression, to remove call overhead and allow for possible use of SIMD instructionsinstructions, either explicitly by instrumenting cranelift enough or through auto-vectorization.
Describe alternatives you've considered
n/a
Additional context

datafusion PhysicalExpr and arrow-rs library currently evaluate expressions by "materializing intermediate results" -- for example (a + b) + c results in first evaluating (a+b) to a temporary location and then adding c to form the final result.
Note however, there is a tradeoff here between the speed gained using the LLVM optimized vectorized kernels in arrow-rs and cranelift generated JIT expressions where JIT may not actually be faster. I think this is what @Dandandan  is referring to when he says "allow for possible use of SIMD instructions, either explicitly by instrumenting cranelift enough or through auto-vectorization."

Another example can be found in these slides from this presentation


[WIP] SD3 DreamBooth Training

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: westfish:x: wangzhanpengwangzhanpeng seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Russian localization error

OS
Ubuntu, .deb
DBeaver version
<IP_ADDRESS>207240747
Problem description
Russian localization error in "Tip of the day" window
Now
облЫчных

Expecting
облАчных

Oops.
Thanks for the bug report @slistov


Use a consistent spelling of the ANTLR grammar fence

While almost all ANTLR grammar block fences begin with uppercase ANTLR, a few (possibly in as-yet un-merged V6 [and V7] PRs) use lowercase antlr. Although both spellings are recognized (by the GitHub renderer and our grammar-extraction tool), Jon and I have agreed that, for consistency, we should use the uppercase approach.
We can change all lowercase occurrences to uppercase in the final stages of closing out V6.

Fixed by #404.


Unexpected error fetching tesla_custom data: 'str' object has no attribute 'update'

I've been using this integration for a few weeks and just noticed this for the first time today.  All the entities are unavailable and I see this error in the log.  After restarting HA it works fine.  I've now enabled debug logging for homeassistant.components.tesla_custom and teslajsonpy and I'll post the logs if it happens again.
I have a Tesla model 3 and a solar panel, but no Powerwall.  Last week I removed the Powerblaster CT clamps from my breaker panel (because they were unreliable), which means the Tesla app no longer receives data about my consumption.  I wonder if that might be relevant here.
2023-01-23 09:39:14.758 ERROR (MainThread) [custom_components.tesla_custom] Unexpected error fetching tesla_custom data: 'str' object has no attribute 'update'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 225, in _async_refresh
    self.data = await self._async_update_data()
  File "/config/custom_components/tesla_custom/__init__.py", line 346, in _async_update_data
    return await self.controller.update()
  File "/usr/local/lib/python3.10/site-packages/teslajsonpy/controller.py", line 822, in update
    return any(await asyncio.gather(*tasks))
  File "/usr/local/lib/python3.10/site-packages/teslajsonpy/controller.py", line 703, in _get_and_process_site_data
    self._site_data[energysite_id].update(response)
AttributeError: 'str' object has no attribute 'update'

Version of the custom_component
3.9.1

Sorry, the PowerBlaster is for your panels? So before you didn't have this issue but now you do but after a restart it went away?

The Powerblaster was used to measure energy consumption of the house.  (I replaced it with IotaWatt.)  The solar generation is measured by the inverter itself, which sends the data to Tesla's ethernet hub via Zigbee.  That might be a red herring though.  I removed the Powerblaster on January 14 and the issue just started today.
After restarting HA this issue went away.

Looking at this again, now I'm having a slightly different error but I think it's related.  All my solar entities are unavailable and this time restarting HA does not fix it.  My Tesla vehicle entities are working fine.
2023-02-03 21:47:27.112 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 182, in _handle_refresh_interval
    await self._async_refresh(log_failures=True, scheduled=True)
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 330, in _async_refresh
    self.async_update_listeners()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 135, in async_update_listeners
    update_callback()
  File "/config/custom_components/tesla_custom/base.py", line 39, in refresh
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 566, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 607, in _async_write_ha_state
    state = self._stringify_state(available)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 572, in _stringify_state
    if (state := self.state) is None:
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 466, in state
    value = self.native_value
  File "/config/custom_components/tesla_custom/sensor.py", line 406, in native_value
    return round(self._energysite.solar_power)
  File "/usr/local/lib/python3.10/site-packages/teslajsonpy/energy.py", line 110, in solar_power
    return self._site_data.get("solar_power")
AttributeError: 'str' object has no attribute 'get'

I added a debug print there to inspect _site_data and I see it's an empty string.
I ran TeslaPy as described here and got this:
% python3 cli.py -e <myemailaddress> -z SITE_DATA
2023-02-03 22:02:34,436 - root - INFO - 2 product(s), 2 selected
Product 0:
Product 1:
{
    "response": ""
}

That empty response comes directly from this endpoint:
https://owner-api.teslamotors.com/api/1/energy_sites/{{site_id}}/live_status
In Postman, the product list API works fine, showing 1  vehicle and 1 energy site from this endpoint:
https://owner-api.teslamotors.com/api/1/products
Redacted output:
{
    "energy_site_id": xxxxx,
    "resource_type": "solar",
    "id": "xxxxx",
    "asset_site_id": "xxxxxxx",
    "solar_power": 0,
    "solar_type": "pv_panel",
    "storm_mode_enabled": null,
    "powerwall_onboarding_settings_set": null,
    "powerwall_tesla_electric_interested_in": null,
    "sync_grid_alert_enabled": false,
    "breaker_alert_enabled": false,
    "components": {
        "battery": false,
        "solar": true,
        "solar_type": "pv_panel",
        "grid": true,
        "load_meter": true,
        "market_type": "residential"
    }
}

This morning around 10am my solar inverter quit producing power and showed error codes 402, 434.  Maybe that's related.  I'll have to call Tesla on Monday to inquire.


Fixed #28142 -- Prevented is_safe_url from crashing when provided an invalid IPv6 URL.

As per https://code.djangoproject.com/ticket/28142
Please let me know if this doesn't actually match the requirements or if a separate test is needed for this.

@UmanShahzad for the test, adding a line in bad_urls should do.

@charettes I've moved it as you said and added some invalid IPv6 URLs for testing.
One issue, and I'm not that knowledgeable with IPv6 so I need confirmation:
            '[2001:db8:a0b:12f0::1:21',
            '2001:db8:a0b:12f0::1]:21',
            '[2001:db8:a0b:12f0::1%25eth0:21',
            '2001:db8:a0b:12f0::1%25eth0]:21',
            '[2001:db8:a0b:12f0::1%eth0:80',
            '2001:db8:a0b:12f0::1%eth0]:80'

The above fail the tests (i.e. appear as valid IPv6 URLs) but I removed them because I'm not sure if they are technically valid or not. Can you give me some insight on that? If they should be included then some more work needs to be done, as far as I can tell.

I think only one invalid case needs to be tested as we're only testing the catching of ValueError, not that _urlparse() (mostly copied from Python's standard library) behaves properly.

@timgraham That sounds fine to me! I left a single case (well really 2, but they check for both parts of the relevant conditional below:
        if (('[' in netloc and ']' not in netloc) or
                (']' in netloc and '[' not in netloc)):
            raise ValueError("Invalid IPv6 URL")

).
Hope that's fine. :)


[SPARK-4226][SQL] SparkSQL - Add support for subqueries in predicates('in' clause)

This PR supports subqueries in preicates 'in' clause. The queries will be transformed to the LeftSemi join as mentioned below.
Case 1 Uncorelated queries
-- original query
select C
from R1
where R1.A in (Select B from R2)
-- rewritten query
Select C
from R1 left semijoin R2 on R1.A = R2.B
Case 2 Corelated queries
-- original query
select C
from R1
where R1.A in (Select B from R2 where R1.X = R2.Y)
-- rewritten query
select C
from R1 left semi join
(select B, R2.Y as sq1_col0 from R2) sq1
on R1.X = sq1.sq1_col0 and R1.A = sq1.B
Restriction : Alias need to be used as we convert it into join queries.
Complete specification is available in https://issues.apache.org/jira/secure/attachment/12614003/SubQuerySpec.pdf

Thank you for reviewing it. Fixed the review comments. And added the TODO for future expansion of complex queries.

Test build #25049 has started for   PR 3249 at commit 09e471a.

This patch merges cleanly.

Test build #25049 has finished for   PR 3249 at commit 09e471a.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
case class SubqueryExpression(subquery: LogicalPlan) extends Expression

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

Test build #25697 has started for   PR 3249 at commit 86e98d5.

This patch merges cleanly.

Test build #25697 has finished for   PR 3249 at commit 86e98d5.

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

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

@marmbrus Please review it.

Test build #25788 has started for   PR 3249 at commit 0347f02.

This patch merges cleanly.

Test build #25788 has finished for   PR 3249 at commit 0347f02.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
case class SubqueryExpression(subquery: LogicalPlan) extends Expression

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

Test build #26847 has started for   PR 3249 at commit e49452b.

This patch merges cleanly.

Test build #26847 has finished for   PR 3249 at commit e49452b.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

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

Test build #26897 has started for   PR 3249 at commit eb0a13b.

This patch merges cleanly.

Test build #26897 has finished for   PR 3249 at commit eb0a13b.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
case class SubqueryExpression(subquery: LogicalPlan) extends Expression

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

LGTM.

@marmbrus Please check whether it is ok.

Test build #27482 has started for   PR 3249 at commit 9e404c0.

This patch merges cleanly.

Test build #27482 has finished for   PR 3249 at commit 9e404c0.

This patch fails to build.
This patch merges cleanly.
This patch adds no public classes.

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

Test build #27483 has started for   PR 3249 at commit e70bc79.

This patch merges cleanly.

Test build #27483 has finished for   PR 3249 at commit e70bc79.

This patch fails to build.
This patch merges cleanly.
This patch adds no public classes.

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

Test build #27484 has started for   PR 3249 at commit 0a90b21.

This patch merges cleanly.

Test build #27484 has finished for   PR 3249 at commit 0a90b21.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
case class SubqueryExpression(subquery: LogicalPlan) extends Expression

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

Test build #27486 has started for   PR 3249 at commit dbd0b87.

This patch merges cleanly.

Test build #27486 has finished for   PR 3249 at commit dbd0b87.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
case class SubqueryExpression(subquery: LogicalPlan) extends Expression

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

Test build #27487 has started for   PR 3249 at commit 036f3c6.

This patch merges cleanly.

Test build #27487 has finished for   PR 3249 at commit 036f3c6.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
case class SubqueryExpression(subquery: LogicalPlan) extends Expression

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

@ravipesala I've created another PR for [NOT]EXISTS, I believe the IN can be transformed into EXISTS and the implementation can be much more simple, can you review the code for me?
Please see #4812

Test build #28083 has started for   PR 3249 at commit 7653eee.

This patch merges cleanly.

Test build #28083 has finished for   PR 3249 at commit 7653eee.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
case class SubqueryExpression(subquery: LogicalPlan) extends Expression
                logError("User class threw exception: " + cause.getMessage, cause)

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

@ravipesala, do you have any idea how to implement the NOT IN? I believe we should consider how to implement the NOT IN when doing IN, or should they come within the same PR?
BTW, can you also enable the hive compatible suite like subquery_in.q or subquery_in_having.q if you think that's also supported in this PR.

Thank you @ravipesala for implementing this, however, this PR probably involve some unnecessary join condition transformation, probably you need to understand the rule of pushing down the join filter / condition first. Sorry, please correct me if I misunderstood something.

@chenghao-intel  Thank you for reviewing it.I will go through your comments and fix it. And regarding not in case we can use  left outer join . I will try to add to same PR.

Sorry for letting this languish.  What is the status here and how does this relate to  #4812?

Build triggered.

Build started.

Test build #35706 has started for   PR 3249 at commit 7653eee.

This patch does not merge cleanly.

Test build #35706 has finished for   PR 3249 at commit 7653eee.

This patch passes all tests.
This patch does not merge cleanly.
This patch adds the following public classes (experimental):
case class SubqueryExpression(subquery: LogicalPlan) extends Expression

Build finished. Test PASSed.

@ravipesala can you answer @marmbrus' question and/or rebase this to master so we can decide how to proceed with it?

Also cc @chenghao-intel who wrote the similar patch #4812


drivers: modem: bg9x: Has no means to update size of received packet.

Describe the bug
This issue is to document an unresolved bug that I encountered when I first tried the ZephyrRTOS with the bg9x modem driver on my EC21 modm.
The current quectel-bg9x driver's recv isn't working as expected, as the recv's unsolicited cmd handler doesn't update the packet size for the socket, compared to the ublox-sara-r4 driver that does as a reference.
This is related to #34273, where the MQTT CONNACK acknowledgement from the broker can never be read by the offloaded socket's implementation, since the data to be read is always zero.
In earlier version of Quectel modems or its firmware, when the modem receives something, the modem reports the <connectID> without specifying the size. For the current quectel-bg9x driver to work on these modem, it is required to query the size of the received buffer using a separate AT cmd, likely in a work.
Some recent firmware (> 2020) for some of the modems have been updated to report the length together with the <connectID> if configured to do so. For these lucky modems with the correct firmware, it is possible to update the buffer size directly in the unsol recv parser just like the ublox-sara's one.
To Test

Build mqtt samples on a board using the bg9x driver
See error

Impact
bg9x driver will not be able to receive anything.
Additional context
I've tried to fix the issue last time, IIRC, MQTT QoS 0 works after the patch but QoS 1 likely fails and I forgot why. I have since move to use gsm_ppp modem.
The commit can be found here for whoever interested to pick up this, but it is very messy as it contains some CCLK and GNSS stuff. I came up with this with the help of @elliot-wdtl
Some important things:

The old on_cmd_unsol_recv is modified to submit a work to perform modem_qird_query_work
modem_qird_query_work will do the AT cmd to query the size of the received buffer and update the socket accordingly.
This patch was done when I didn't really comprehend how things work.

Quectel TCP/IP application notes:

Old versions
New version that can report length directly - Requires login

Some recent firmware (> 2020) for some of the modems have been updated to report the length together with the  if configured to do so.

This is interesting info. I'm working with bg95 and I have made quite a few changes which I haven't got to trying to upstream yet. I take advantage of configuring the modem to indicate the length so maybe this will be a problem if it's not available on lots of modems. I have also found that even if I configure it to indicate the length, it will not indicate the length on SSL sockets which is a sticky point for me. You also can't query the size of the receive buffer on SSL sockets so I have a different workaround.

I have made quite a few changes which I haven't got to trying to upstream yet. I take advantage of configuring the modem to indicate the length so maybe this will be a problem if it's not available on lots of modems.

I guess for older firmware's users they will have to implement the AT+QIRD way, at least your current implementation will cover lots of newer firmware and modems


[stable/jenkins] Fix JCasC version

Signed-off-by: Nguyen Le Vu Long<EMAIL_ADDRESS>
What this PR does / why we need it:

Upgrade JCasC version to 1.21
Fix JCasC Support version to 1.18. Apparently there won't be more release after 1.18 because this plugin is deprecated.
Version number should be double-quoted, otherwise 1.20 will be parsed as 1.2. This caused an error when I tried to upgrade JCasC to 1.20

Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[X] DCO signed
[x] Chart Version bumped
[X] Variables are documented in the README.md
[X] Title of the PR starts with chart name (e.g. [stable/chart])

/assign @lachie83

/lgtm

@longngn Thanks for contributing!


BUG: hamburger icon needs to replace with close icon if menu opens

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?

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

Hello @subhadeeproy3902 please assign this issue to me under gssoc 24

Hello @subhadeeproy3902 please check pr #430 for this. Thanks


Added three new valid severities: convention, refactor and fatal

Implements #85

Sorry, I've made a (silly) mistake in my response in #85. I forgot we already supported severity levels in haml-lint (I maintain multiple projects and got mixed up), so my response was specifically talking about adding support for severities in general. To that end, I was willing to support the warning and error severity levels, but not add additional ones.
I don't really understand the need for severity levels other than warning and error. In essence, when the linter finds a potential problem, there are one of two things you can do in response: you can decide it does not require fixing (warning), or you want developers to fix it (error). Adding additional severities doesn't make much sense to me since at some level the question still boils down to a very binary ignore/fix mentality.
Can you elaborate on why these additional levels are useful? I could definitely see value in modifying the RuboCop linter to support specifying how the convention, refactor, and fatal severities are translated into a haml-lint warning/error severity, but I don't see the need for haml-lint to support a more complex set of severities. Appreciate your thoughts on this.

Hi @sds.  I can comment on the "why".  In our repo, we have a bot that runs rubocop and haml-lint together and normalizes the results into a comment in the PR.  It's a lot like houndci, but doesn't comment line-by-line.  Here's an example that does mostly haml checks.
On the rubocop side, we have a number of severity levels.  "error" generally means a Ruby syntax error or something catastrophic.  "warning" generally translates to a Ruby warning.  So, even at this point, the alignment to the haml-lint definitions of error and warning breaks down.  Then the rest fall into at least 3 other buckets that are configurable.  We've used these buckets mostly in the default to represent "must fix issues", "maybe fix issues".  For example, we've determined that "Style/ColonMethodCall: Do not use :: for method calls." is a "must fix" and we've let it at the default value of "convention".  However, something like "Line Length Too Long" isn't necessarily bad, so we've overridden the default value with "refactor" to lower its severity...this allows us to inform the author of the error without marking it as "must fix"
So, I think the underlying request is to have a way to override the severities of specific cops with custom values.  Whether those values mirror rubocop's values directly, or are from a different set, I don't think it matters, as long as we are able to configure the override.  This particular PR implements the mirroring, but I think if you wanted a different defined set like (e.g. error/warning/required/info), I think that would be fine too.


a couple of minor suggestions

Hi Davide,
I had a couple of very minor things in my fork I thought perhaps made sense. Let me know what you think.
The sys.flags.debug is activated if python is run with the "-d" flag (so you turn it off/on on command line)

Thank you a lot @Eothred !
I like the idea to use the system debug flag. Only one simple note. This expression:
debug = True if sys.flags.debug else kwargs.pop('debug', False)
is equivalent to
debug = sys.flags.debug or kwargs.pop('debug', False)
It has lower complexity, but however is an instruction executed only one time at startup, and so not a problem.

Ah, of course it is and it looks nicer as well. I guess I was tired :)

:-) no problem at all, thank you


g.cwaread reading AX3 cwa data when sensor was plugged in laptop by participant

I am creating a separate issue for this as it was pooled with various other issues in #369.
From the related discussion in https://github.com/activityMonitoring/biobankAccelerometerAnalysis/issues/81 it appears that the AX3 accelerometer was probably plugged into a computer by a participant, and that this action caused the data interpretation issues and extreme values.
To me it is unclear whether this is specific to UKBiobank data or applies also to other AX3 data.
For typical use cases of GGIR all of this may not be an issue since data blocks with extreme values are automatically labelled as corrupt and ignored. However, this happens outside the g.cwaread function. So, anyone using g.cwaread directly will still get those extreme values.
Possible action points:

[ ] Try to replicate the issue by collecting a short test recording where the sensor is plugged into the software during the recording.
[ ] Enhance g.cwaread to try to read those values correctly or at least produce a warning.

Needless to say that by creating this issue I am not committing to working it. If anyone has time to work on it then feel free to do so. I am happy to spend time on it if someone can pay for my time (sorry free software does not mean free time).

I think this is a non-issue. It should be a rare phenomenon and GGIR already handles the extreme values that result from it. I think there are more important bits of work to focus on.


feat: cross file blocks

Please describe the changes this PR makes and why it should be merged:
Supports this syntax:
import { Button } from './different-file';

const ButtonBlock = block(Button); // cannot get the declaration

Status

[ ] Code changes have been tested against prettier, or there are no code changes
[ ] I know how to update typings and have done so, or typings don't need updating

Semantic versioning classification:

[ ] This PR changes the codebase

[ ] This PR includes breaking changes (methods removed or renamed, parameters moved or removed)
[ ] This PR changes the internal workings with no modifications to the external API (bug fixes, performance improvements)

[ ] This PR only includes non-code changes, like changes to documentation, README, etc.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

43 of 288 (14.93%)  changed or added relevant lines in 6 files are covered.
23 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-2.4%) to 35.52%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

packages/compiler/react/transform.ts
0
6
0.0%

packages/compiler/react/visitor.ts
8
22
36.36%

packages/compiler/plugin.ts
14
61
22.95%

packages/compiler/react/utils.ts
6
62
9.68%

packages/compiler/react/expressions.ts
10
132
7.58%

Files with Coverage Reduction
New Missed Lines
%

packages/compiler/react/visitor.ts
23
47.81%

Totals

Change from base Build<PHONE_NUMBER>:
-2.4%

Covered Lines:
1216

Relevant Lines:
3524

💛  - Coveralls

Hmm, good work on this @aidenybai, thank you for the review @poteboy!

The work here looks really interesting. I hope it is completed soon though.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Split modules into core and extra features

This PR split each module into two sections: core features and extra features. The Earth Engine team and the geemap community will maintain the core features. The geemap community will maintain the extra features.

The file structure of each module has been reorganized as two sections: core features and extra features. The core features will be co-maintained by the Earth Engine team and the community, while the extra features will maintained by the community. The list of core features is subject to change.
@jdbcode @naschmitz
Modules with both core and extra features
# *******************************************************************************#
# This module contains core features and extra features of the geemap package.   #
# The Earth Engine team and the geemap community will maintain the core features.#
# The geemap community will maintain the extra features.                         #
# The core features include classes and functions below until the line # ******* #
# *******************************************************************************#

def core_function(**kwargs):
    pass

def core_function2(**kwargs):
    pass

# ******************************************************************************#
# The classes and functions above are the core features of the geemap package.  #
# The Earth Engine team and the geemap community will maintain these features.  #
# ******************************************************************************#

# ******************************************************************************#
# The classes and functions below are the extra features of the geemap package. #
# The geemap community will maintain these features.                            #
# ******************************************************************************#

def extra_function(**kwargs):
    pass

def extra_function2(**kwargs):
    pass

Modules with extra features only
# *******************************************************************************#
# This module contains extra features of the geemap package.                     #
# The geemap community will maintain the extra features.                         #
# *******************************************************************************#

def extra_function(**kwargs):
    pass

def extra_function2(**kwargs):
    pass

The core features will have fewer number of icons on the toolbar, but users can expand the toolbox by clicking on the plus icon to access extra features. Of course, this is a tentative proposal subject to change.


simplify-implication endpoint

We need to implement something similar to the implies endpoint in the booster backend, as a new version of the old endpoint with better behavior. The requirements are:

The endpoint should be incremental and direct algorithm, rather than encoding to another problem. That means, we should first attempt normal matching on the configuration, and if that fails, report taht back to the user (for example: "matching failed because variable X got conflicting assignments A : B : .WordStack and B : .WordStack" or "Could not find matching assignment from f(X) to g(Y)"). If matching succeeds, the match should be applied to the consequent, and the resulting constraints minimized to find the unknown core implication.
The return should be one of:

"Terms don't unify": The configurations have some constructor that differ.
"Unsure about unification, matching failed": This is the "don't know" response, no simplification is induced.
"Constraint subsumption failed": substitution from successful matching, and unsatisfiable core of constraint implication. Note that this should only be returned if the resulting constraint implication is actually unsatisfiable.
"Constraint subsumption unknown": substitution from successful matching, and unknown core of constraint implication. This can be returned if the constraint implication is any of "unsat", "sat", or "valid" (fallback case).
"Implication succeeded": A constrained substitution as the result, and this is only returned if the implication is valid.

Note that if you have constrained terms CT == T /\ CS and CT' == T' /\ CS', then a solution to CT ==> CT' is a constrained substitution alpha = alpha_config /\ cs, with alpha_config being a substitution and cs being a list of constraints, such that alpha(CS') == alpha_config(T' /\ CS') /\ cs == CT.
Note we can use the same tri-state matching algorithm we use for applying rules to get the matching results we want, because that matching algorithm already says one of (i) unification will never work between these terms, (ii) terms matched, here is substitution, and (iii) don't know.

Closed by https://github.com/runtimeverification/haskell-backend/pull/3846


[PKG-5361] Initial build 0.5.10 ❄

bson 0.5.10 :snowflake:
Destination channel: Snowflake
Links

PKG-5361
Upstream repository

Explanation of changes:

Swapped to Github source to add upstream tests
Skipped a couple test files on Python 3.12 due to their use of AssertEquals.

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_dfhkash8s9/clone` failed. (See above for error)
The following problems have been found:
===== ERRORS =====

clone/recipe/meta.yaml:20: missing_wheel: For pypi packages, wheel should be present in the host section
===== Final Report: =====
1 Error and 0 Warnings were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_batpgskz3l/clone` failed. (See above for error)
The following problems have been found:
===== ERRORS =====

clone/recipe/meta.yaml:23: missing_wheel: For pypi packages, wheel should be present in the host section
===== Final Report: =====
1 Error and 0 Warnings were found


colorprimarydark is not working when i extend appintro2, it show greys color.

this is my theme, which i am using in this activity in manifest.

Same problem here.
If I use
setIndicatorColor(Color.GREEN, Color.BLUE);

all works fine.
However if I try to use my custom colors (e.g. R.color.color_primary or R.color.my_custom_color) the indicators' color is wrong.

Same here :(

I add this in my Intro Activity Class
`
public class MyIntro extends AppIntro {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }`


Add MonoDoc APIs

Currently the API is inline in the source code, this is just temporary until I figure out if I like the API names.
Once that happens, I will do a one-time import into Monodoc and drop the API docs from the source (except operations, which we can reimport easily as I do not care about overwriting).

Done


"Query in workspace" should instantly move the SQL Editor to the new model, rather than wait for the compute to finish

When clicking "query in workspace" on a medium-sized source, like the flights dataset of 2M rows, the SQL Editor waits to open up the new model (the select * from {source}) until the computation completes.
The SQL Editor should switch to the new model instantly, where the user can wait for the computation to complete (by observing the loading spinner).

@ericpgreen2 , is this still a problem?

Nope, I'll close!


Allow psr/http-message v2.0 (1.x)

@clue @SimonFrings would it be possible to get some eyes on this and released if all good?


Implement context cancellations

This pull request aims to introduce context cancellations to go-carbon. Currently, cancellations are implemented in api and zipper but not in go-carbon. This will help avoid uneeded work(in case client is gone), or when the request is taking too much time, and reduce load on the server.

I tested this by executing queries to go-carbon directly.
TODO render requests (they are not getting cancelled)
find queries are getting cancelled
curl -v -o /dev/null '<IP_ADDRESS>:8080/metrics/find/?query=prod.*.*.*.org.*.*.*.*.%7BRead%2CWrite%7DLatency.*.*.*'
Ctrl+C

In the logs:
{
  "level": "ERROR",
  "timestamp": "2019-07-23T16:47:28.483+0200",
  "logger": "access",
  "message": "find failed",
  "handler": "find",
  "url": "/metrics/find/?query=prod.*.*.*.org.*.*.*.*.%7BRead%2CWrite%7DLatency.*.*.*",
  "peer": "<IP_ADDRESS>:52880",
  "query": [
    "prod.*.*.*.org.*.*.*.*.{Read,Write}Latency.*.*.*"
  ],
  "format": "json",
  "runtime_seconds": 1.191762335,
  "reason": "Internal error while processing request",
  "error": "find failed, timeout",
  "http_code": 500
}

What I am missing here:
carbonapi_uuid - to track where the request came from
error - please remove it in favor of 'message' field and clear wording 'cancelled' or 'timeout' there
reason - not needed, please remove
http_code - Replace with HTTP 499


"Jumps" to first section below nav?

When I scroll down past the navbar, it jumps significantly farther than a single scroll should go. This causes the navbar to cover my section's header unless I have a huge padding at the top of the section. Is there any way to remove this jumping behavior?

I'm getting this behavior as well in Safari 6


feature/misc

Pull request recommendations:

[x] Name your pull request your-development-type/short-description. Ex: feature/gui
[x] Link to any relevant issue in the PR description. Ex: Resolves [gh-12]

Resolves #55 resolves #56 resolves #57

[x] Provide context of changes.

Unary operators added to VirtualTag
m3/day supported by parse_units
VirtualTag now has parent_id attribute
Extended test coverage for VirtualTag.calculate_values

[x] Provide relevant tests for your feature or bug fix.
[x] Provide or update documentation for any feature added by your pull request.

Codecov Report

Merging #62 (1253314) into main (f4e8c63) will increase coverage by 0.61%.
The diff coverage is 84.37%.

:exclamation: Current head 1253314 differs from pull request most recent head d2477f3. Consider uploading reports for the commit d2477f3 to get more accurate results

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             main      #62      +/-   ##
==========================================
+ Coverage   84.44%   85.06%   +0.61%
==========================================
  Files          15       15
  Lines        1749     1901     +152
==========================================
+ Hits         1477     1617     +140
- Misses        272      284      +12

Impacted Files
Coverage Δ

wwtp_configuration/tests/test_node.py
100.00% <ø> (ø)

wwtp_configuration/parse_json.py
87.44% <57.14%> (+1.60%)
:arrow_up:

wwtp_configuration/utils.py
79.78% <79.62%> (-0.22%)
:arrow_down:

wwtp_configuration/tag.py
82.27% <85.71%> (+2.45%)
:arrow_up:

wwtp_configuration/connection.py
55.22% <100.00%> (+0.95%)
:arrow_up:

wwtp_configuration/node.py
90.16% <100.00%> (+0.04%)
:arrow_up:

wwtp_configuration/tests/test_tag.py
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


add option to prevent derive(Default) for certain rust types

I want to create an implementation of Default for my generated widl type that is not the standard rust Default implementation, but since src/generated.rs contains
#[derive(Debug, PartialEq, Deserialize, Serialize, Default, Clone)]
if I define my own impl Default for MyStruct in src/lib.rs, I get a compiler error that Default is already implemented.
My first thought was to suggest adding a cli flag to wapc generate such as  --no-derive-default, to prevent Default from being generated, so I could create my own implementation in src/lib.rs.
But then I realized that if you have multiple struct types in the widl file, you might not want to implement Default for all of them, so a better implementation might be to add some lines to codegen.yml that give the name of the type and code-generation flags for that type, so if it's not overridden in codegen.yml, the Default would still be added to the generated derives list.

This issue is no longer relevant for widl, and the feature is built into the smithy rust codegen.


Expected Improvement fails

when I call Bayes with utility_function='ei'
I get :
File "/home/khs/.local/lib/python2.7/site-packages/scipy/optimize/optimize.py", line 292, in function_wrapper
return function(*(wrapper_args + args))
File "/home/khs/.local/lib/python2.7/site-packages/chocolate/search/bayes.py", line 102, in
res = minimize(lambda x: -self.utility(x.reshape(1, -1), gp=gp, y_max=y_max, kappa=self.kappa),
AttributeError: 'Bayes' object has no attribute 'kappa'

It seems that when selecting ucb, kapa is not registered. I'll fix that.

6a0531d fixes the issue


Upping release (0.2.3 -> 0.2.4) to fix bad PyPI formatting

This change is

LGTM

Coverage remained the same at 86.921% when pulling 2f6d0d3e2213c1522ded92132ad7133afd68246a on isovar-up-version into 1c6d85a0f540be79ca654948e4e822d400f3a1c5 on master.


How to have inline assets working in production bundling?

I've tried several times to configure Webpack to be able to bundle inline assets, such as , however, the paths do not get updated within the dist bundle and I don't believe the assets are there either.
Any ideas?

The things I had to do to make it work:
npm install file-loader --save-dev

Thank you for the answer, @vivaPQ. I had to run a very similar configuration to get assets to load within my styles files as those loaders are targeting them and able to parse the import statement. However, I'm running into this issue within my template files. For example, the  sits within my HTML file and those loaders you mentioned above are not triggered, since it's a different file type.
In short, how do we go about importing assets within template files?
Thanks, in advance, for the help.

Ah.. I see.. so the issue here is also when you want to distribute the app.. the dist does not have the assets, only the hashed ones loaded via the image resolver form .styl files but not the ones form img tags.
In the end I had to just follow what https://github.com/AngularClass/NG6-starter/issues/139 @jvalen recommends. Remove all of above suggestions so that you don't get duplicates in assets (some hashed some in assets/ folder)  and then based on @jvalen suggestions:
npm install --save-dev copy-webpack-plugin
//webpack.dist.config.js

var CopyWebpackPlugin = require('copy-webpack-plugin');
...
config.plugins = config.plugins.concat([
  new CopyWebpackPlugin([
    { from: 'client/assets', to: 'assets' }
  ]),
...
]);

Like this in .styl files works for me with url('/assets/images/bg.jpg') while in img tags
The assets get copied in dist folder so they are accessible.

Awesome! That's the type of workflow I implemented, @vivaPQ, but with a gulp process for moving the assets into the fist directory.

Any advantages of doing this within Webpack?
How did you mean by removing the duplicates that are generated via the image and style loaders and the copying of the assets over? As in, all of the images that are referenced inside of my styles are hashed and carried over to the dist as you mentioned, however, with the approach of copying over the entire assets directory, you're getting those same images carried over, as well. I guess it's not that big of a deal, but was curious...

Thanks, again, for the help.

Cool

I don't really think it makes any difference as long as the files are there;
I didn't find a solution for not duplicating it.. just by removing the loaders: ['file-loader?hash=sha512&digest=hex&name=[hash].[ext]', 'image-webpack-loader']  but then it might break the .styl url

Yeah, good point.

I noticed we could also leverage the html-loader to be able to require assets within html templates.


WIP: changes to upstream DF, in order to enable parallelized writes with ParquetSink

This branches off the most recent DF version in iox.
Then adds additional patches in order to make the parallelize ParquetSink work with our metadata use case.
Background.
IOx adds our own metadata in the parquet file. Currently, we do so using the WriterProperties with the ArrowWriter. When we did the ParquetSink parallelized write PoC, we also provided this iox metadata by adding it to the WriterProperties given to the ParquetSink::write_all().
The approach used in the PoC is no longer viable. There was a change to unify the different writer options across sink types, specifically to make COPY TO and create external table have a uniform configuration. Users can now specify the configuration with the query (e.g. COPY <src> TO <sink> (<config_options>)). This was a good high level change; however, we would like to iterate on this approach.
The current implementation derives the writer properties from the TableParquetOptions. This conversion always sets the sorting_columns and user-defined kv_metadata as None, as demonstrated in the first commit. We have several choices in how to return the ability to set these options -- choices which are commented below in this WIP.

👌

One thing that might be worth considering is how to test this
For example, do we want to add a SQL level API like
COPY (values (1), (2)) TO 'foo.parquet' OPTION (metadata "foo:bar").)

Added sqllogictests, which did require a change for proper config after statement parse.

This patch will be included in this DataFusion update: https://github.com/influxdata/influxdb_iox/pull/10780. It is in queue behind two PRs: https://github.com/influxdata/influxdb_iox/pull/10764 and https://github.com/influxdata/influxdb_iox/pull/10772. If these two PR got deployed without issue, I plan to merge https://github.com/influxdata/influxdb_iox/pull/10780 tomorrow morning

https://github.com/influxdata/arrow-datafusion/pull/13 brought in the upstream change (https://github.com/apache/datafusion/pull/10224 / https://github.com/apache/datafusion/commit/9c8873af12826e47f5743991859790df7a3b6400), so closing this one


[8.x] Fix reset password url generation for reverse proxy

url(route())
This is redundant and should be changed to "route()" only.
And besides that, there are problems with reverse proxies.
It looks fine in artisan tinker, but that's because he doesn't understand about Reverse Proxy. Try to build it in real.
For reverse proxy site, we can use forRootUrl to force it to env APP_URL to operate properly.
This is especially correct working too when you place it under a subdirectory.
However, url(route()) breaks this.
x https://example.com/mysite/mysite/password/reset
o https://example.com/mysite/password/reset

This is a major breaking change and has been attempted many times before in the past. We also do not support running Laravel in a subdirectory. Please see https://laravel.com/docs/8.x#directory-configuration

I have read some discussions on this issue.
It made sense to me.
In particular, I hadn't yet used the "artisan optimize" command. As far as I'm aware, I've never had any problems with Reverse Proxy with Directory URI.
My environment has these limitations. So I'll continue with this patch with service provider. And I won't be optimizing in the future.
Thank you.


Draft: Embed refactor

Draft proposal for moving embed logic to separate package. See #930

Looks good!
Could you please update the main README to go in together with this change.
For the least, it should mention the second package.

Looks good!
Just update the title or this PR and let's merge

I will do the rest

You're impressively quick off the mark, I've got one more tweak incoming. I'll open a new PR for it.

OK


Add newer OpenAI Embedding Models

Hey I added two newer embedding models from OpenAI, namely text-embedding-3-small and text-embedding-3-large. These are significantly cheaper and faster. You can find details about them on their announcement post here. Let me know if I should add anything else!

The Postgres table uses the hnsw index, which supports vectors up to 2,000 dimensions - https://github.com/pgvector/pgvector?tab=readme-ov-file#what-if-i-want-to-index-vectors-with-more-than-2000-dimensions
The text-embedding-3-large model has a 3072 dimension. It's suggested to do a dimensionality reduction. But i'm not too familiar w/ it.

Released in 0.0.189

The Postgres table uses the hnsw index, which supports vectors up to 2,000 dimensions - https://github.com/pgvector/pgvector?tab=readme-ov-file#what-if-i-want-to-index-vectors-with-more-than-2000-dimensions
The text-embedding-3-large model has a 3072 dimension. It's suggested to do a dimensionality reduction. But i'm not too familiar w/ it.
Let me add text-embedding-3-small for now.

sorry I missed that. Thank you for looking into it!
OpenAI has native support for shortening embeddings so technically we can configure the dimension size for text-embedding-3-large model to the max size available for pgvector. I'll look into it.

https://openai.com/blog/new-embedding-models-and-api-updates
https://platform.openai.com/docs/guides/embeddings/use-cases

@roguesherlock Just added support for text-embedding-3-large with reduced dimension of 2000.
commit: https://github.com/sst/ion/commit/327870d96fb98655f419e4e8feb31bbc6350331f
doc: https://ion.sst.dev/docs/component/aws/vector/#model

@roguesherlock Just added support for text-embedding-3-large with reduced dimension of 2000.
commit: 327870d doc: https://ion.sst.dev/docs/component/aws/vector/#model

Awesome that was quick!


Problem using Find_edit_site.pl for single cell data

Hi there,
I wonder how to use find_edit_site.pl for the matrix generated from scRNA-seq data.
I could not find cell_ID information anymore after using find_edit_site.pl to the matrix files generated by "parseBAM.pl --mode SingleCell --Cell_ID_pattern 10X", and also the control coverages are all 10, and control editing rates are all 0 as below:

My command:
perl Find_edit_site.pl --annotationFile gencode.vM23.refFlat --EditedMatrix Exp.cov5.rdup.output.matrix.gz --controlMatrix Ctrl.cov5.rdup.output.matrix.gz --minEdit 5 --maxEdit 90 --editFoldThreshold 1.5 --MinEditSites 3 --cpu 4 --outfile Exp.vs.Ctrl.rdup.output.bed --fallback Mus_musculus.GRCm38.dna.primary_assembly.fa
Thanks!

Hi,
I believe that you will also need to use "-SingleCell" option when using Find_RNA_edit_sites.pl to keep track of cell ID. Have you looked in the matrix files if these are there?
The 10 coverage and 0 mutation usually means that there was no coverage at this position in the control matrix. When using the fallback option, it will report the minimum coverage filter value default is 10). This can be changed with: -ControlMinCoverage ( and -EditedMinCoverage for dart sample). However in this case "genome" should be reported instead of "control" in the fourth column. This may be a bug I will need to look at.
Can you confirm if you have coverage that position in the matrix file? You can do so with
tabix file.matrix chr1:24613255 | head

Let m

Thanks for your reply. It looks like this:
(base) ..$ tabix output.matrix.gz chr1:24613255 | head
chr1	24613255	0	10	0	0	0	10	AAACGAATCTGCCTGT
chr1	24613255	0	10	0	0	0	10	AACGTCAAGTAAACGT
chr1	24613255	0	10	0	0	0	10	AAGCCATGTACCGGAA
chr1	24613255	0	10	0	0	0	10	AAGTTCGTCGAGATGG
chr1	24613255	0	10	0	0	0	10	AATCACGGTGGCAGAT
chr1	24613255	0	10	0	0	0	10	AATCGACTCAGCAATC
chr1	24613255	0	10	0	0	0	10	AATGGCTTCGTCCTCA
chr1	24613255	0	10	0	0	0	10	ACAGGGAAGCGCATCC
chr1	24613255	0	10	0	0	0	10	ACATGCATCTCGGGAC
chr1	24613255	0	10	0	0	0	10	ACCCTCAGTCTTTCTA

Thank you for your reply. I think I know what is the issue here.
For analysis of single cell data, we typically use a "pseudobulk" matrix as control. This control file needs to have a single line per genomic position and would not have the cell IDs in the control matrix. By using this pseudobulk sample , we compare editing in each DART cell to the average editing across all control cells and not in any individual control cell. In the Mol cell study, I believe this was generated by combining the bam files from all control cells prior to generating the matrix,
For more detail, I will direct you here : https://pubmed.ncbi.nlm.nih.gov/36042888/, as well as this github page: https://github.com/tegowski/scDARTHEKcells which contain more detail on the single-cell analysis. (which was not done by me).
This pseudo-bulk reference sample can also be generated by collapsing your existing control matrix using the collapse_matrix.pl. which i just added to the Code/scripts directory.
Please let me know if that makes sense.

Thanks for the update. I will try to follow your directions.


'X' profile icon missing

Describe the Error
there's no icon for your X profile.

Expected behavior
a profile icon like for the rest of the socials.

Additional context
@sanjay-kv please assign me this issue under gssoc and hacktoberfest. thankyou

This issue already exist.


Chapter 2: ROOT_URL introduced without explanation

The following is not explained, and is not motivated at all.
const ROOT_URL = process.env.ROOT_URL || `http://localhost:${port}`;

What is process.env?
Why must we use a default if we have process.env.ROOT_URL?
Do we always have ROOT_URL?
Who provide it to us?
Must we provide to ourselves?
If we always have process.env.ROOT_URL, remove the code.
If not, introduce this code ONLY WHEN NEEDED, not now.

@realtebo Good point.
I think ROOT_URL is used in Chapter 8 when we prepare our app for deployment (https://github.com/builderbook/builderbook/blob/master/book/8-end/lib/api/getRootUrl.js).
I see your point of introducing ROOT_URL in Chapter 8, not Chapter 2.
I'll push changes tomorrow.
Thanks.


[ja] Update content/ja/docs/concepts/architecture/nodes.md

This is a Feature Request

What would you like to be added

About content/ja/docs/concepts/architecture/nodes.md

Graceful node shutdown
Swap memory management

Why is this needed
Graceful node shutdown is FEATURE STATE: Kubernetes v1.21 [beta]
and Swap memory management is FEATURE STATE: Kubernetes v1.22 [alpha]
The Japanese documents do not reflect the latest updates of them.
In addition to that, I made some corrections.
Comments

/assign

/remove-lifecycle rotten
because the related PR is under reviewing
/triage accepted


Feature : Migrating rolling docs to wiki

What does PR do ?

This PR migrates our existing rolling doc to GitHub wiki
Resolve #2

Consideration

I have considered creating .md file for each meeting and targeting to point them towards github wiki as a individual section

What next ?

I am unclear about how to integrate this to github wiki , and update / create new meeting .md automatically on future

Thanks @aashish66  bhai now meetings are migrated to doc/meetings . We no longer need to maintain wiki ! They are available like this : https://osgeonepal.github.io/rollingdoc/Meetings/meeting_2023-12-6/ . Now we will simply insert them as PR and it will be auto deployed to the page


On-success() Called Immediately But file is not compresed or exists

  /* VideoCompress.compressVideoMedium(videoUrl, compressedFile.getAbsolutePath(), new VideoCompress.CompressListener() {
                @Override
                public void onStart() {
                    register_progress = ProgressDialog.show(UploadVideoActivity.this, null, getResources().getString(R.string.operation_progress), true);

                }

                @Override
                public void onSuccess(String compressVideoPath) {
                    register_progress.dismiss();
                    Toasty.info(getApplicationContext(), "Success", Toast.LENGTH_LONG).show();

                }

                @Override
                public void onFail() {
                    register_progress.dismiss();

                    Toasty.error(getApplicationContext(), "failed!", Toast.LENGTH_LONG).show();

                }

                @Override
                public void onProgress(float percent) {

                }
            });
       */

Please help what  Im doing wrong

What's your file type?

What's your file type?

same problem

This errot is about permission. if you are using android 11 or above then you must give write permission. I encountered the same error and fixed after giving manage file storage permission


[Unexpected Behavior] Song Rate

Discussed in https://github.com/TeamRizu/OutFox/discussions/258

Originally posted by JapanYoshi July 23, 2020

What you're using
Rate and Sound Effect don't seem to be operating correctly.
Expected behavior
I expect one of the options in Sound Effect to proportionally change the pitch with the speed, and the other to try to keep the pitch the same. I'll call the former "LP" (because it is reminiscent of a vinyl record on the wrong RPM), and the latter "Stretch" (because FL Studio calls it that).
I propose for the third option, Off, to select between these two depending on the speed chosen. For smaller differences, LP sounds better; at the expense of different pitch, the waveform is unmodified, making the sound crisp. For extreme rates, Stretch sounds better; LP would make the song sound too muddy or tinny if the pitch were changed too. I propose using LP if 0.7 ≤ Rate ≤ 1.5 (since Pump It Up used to have LP and a rate option between 0.8 and 1.5, and I'd like LP to also be used if Rate is 0.75).
Also, Stepmania 5's time stretching function is grating to the ears, compared to, for example, YouTube's play speed options.

@JapanYoshi #39
We have fixed this to do the following:
Off = off
Speed = Affects Rate, does not touch Pitch
Pitch = Affects Pitch, does not touch Rate (Fixed)
Both = (NEW) Affects Pitch and Rate.
This will be available from Alpha 4.9.9


Add mac dependencies

(Not including Xcode)

Does it actually work on macOS?

Yes! Although none of the icons (save, load, etc) load for some reason. And there's no horizontal scrolling but I think that's a known bug?

That's cool. Can you post a screenshot?
Horizontal scrolling is not yet implemented (I was hoping to see an efficient implementation of line wrapping so horizontal scrolling would not be needed).

Will do (just on my way to Thailand so will be a couple of weeks!)
I think word wrap won't eliminate the need for horizontal scroll so you
should plan on implementing both. Also a couple of other considerations:

Xcode has "smart word wrap" (I guess you would call it) which wraps code
as if it were done manually (i.e. increase the indentation by 1). It's
pretty nice. Would be worth doing that.
Virtually all editors I've used have terrible performance with long
lines (2000+ characters). It would be great if that wasn't the case with
this. At the moment it is the fastest editor for long-line files I've found
(second is Sublime Text) but I guess that might be because it just ignores
most of the line.

On Wed, 21 Nov 2018, 08:56 Elias Aebi<EMAIL_ADDRESS>wrote:

That's cool. Can you post a screenshot?
Horizontal scrolling is not yet implemented (I was hoping to see an
efficient implementation of line wrapping so horizontal scrolling would not
be needed).
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/eyelash/xi-gtk/pull/62#issuecomment-440585777, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAXACtcMlKP7RoKXtkYJcFiNhOS7ugjMks5uxRUxgaJpZM4Yq0oq
.


fix: dep bug fix when parsing --from="" from command line

Fixes the --from="" issue

Since it's only a dep update I'm going to merge since Travis passed and my local testing all passed.

:+1:


CommonJS Support

Is your feature request related to a problem? Please describe.
The current SDK is incompatible with "commonjs" packages, such as using @modelcontextprotocol/sdk in Nest.js.
Describe the solution you'd like
@modelcontextprotocol/sdk should be compatible with both ESModules and CommonJS.
Describe alternatives you've considered
n/a
Additional context
n/a

This can be worked around by using dynamic import() at runtime. ESM is the way the ecosystem is trending, so we'd prefer to avoid maintaining CJS if possible.

Dynamic import does not work when the tsconfig.module is set to commonjs in TypeScript, since "await import" is compiled into "require". It would be highly beneficial to have the build file support both "CJS" and "ESM," similar to packages like anthropic-sdk-typescript.

You should be able to use "module": "node16", right?

Is your feature request related to a problem? Please describe. The current SDK is incompatible with "commonjs" packages, such as using @modelcontextprotocol/sdk in Nest.js.
Describe the solution you'd like @modelcontextprotocol/sdk should be compatible with both ESModules and CommonJS.
Describe alternatives you've considered n/a
Additional context n/a


Trying to declare extension and getting error.

I'm trying to create an TargetType extension, but I keep getting an error: Use of undeclared type 'foo'
extension GitHub: TargetType {
}

Which version of Moya are you using? Could you provide the whole file? Which line produces Use of undeclared type 'foo'? Have you been able to reproduce in a completely new project?

I ran carthage update. So it must be the latest version. The line is the first line from above, when I declare the extension. I'm having this issue when I try to write this in a Cocoa Touch Framework. I tried both CocoaPods and Carthage. @bjarkehs

I forgot about declaring the enum.


Support explicitly ignoring compilation database when using .clangd

I'm doing some work on systemd-boot. Because systemd boot is an efi application and building efi applications isn't directly supported by meson, systemd's build system, the systemd-boot build is done entirely using meson custom targets. The specifics of this aren't important but a side effect of this is that the commands to build systemd-boot do not end up in the compilation database generated by meson.
To work around this, my idea was to use a .clangd file and list the compilation flags explicitly. However, even when specifying a .clangd file, clangd still uses another file from the compilation database as a heuristic and appends the flags from the .clangd to this compilation flag instead of using the flags from the .clangd file exclusively.
Ideally, CompileFlags would have an option IgnoreCompilationDatabase that would make clangd ignore the compilation database for all files managed by that .clangd config.

I actually landed this just before the 12 release cut, and haven't updated the docs yet.  https://github.com/llvm/llvm-project/commit/118c33ef47acae6ebb91350cf8f7bfb85427ef4e#diff-4c122c87e83ef21b528325199fc2fdb05bec0e6278603e5245bc7ecea055d57bR154
In the CompileFlags section, you can specify CompilationDatabase: None. Other valid values are Ancestors (the default) or the path to a directory containing the CDB.
You'll need a really recent build, or the upcoming 12 release, though.

I actually landed this just before the 12 release cut, and haven't updated the docs yet.  https://github.com/llvm/llvm-project/commit/118c33ef47acae6ebb91350cf8f7bfb85427ef4e#diff-4c122c87e83ef21b528325199fc2fdb05bec0e6278603e5245bc7ecea055d57bR154
In the CompileFlags section, you can specify CompilationDatabase: None. Other valid values are Ancestors (the default) or the path to a directory containing the CDB.
You'll need a really recent build, or the upcoming 12 release, though.

Awesome! Thanks for adding this!

Awesome! Thanks for adding this!


Eager load collection constants to avoid constant loading problems.

This solution tries to avoid these workarounds by eager loading all of the
collection classes and their descendants before any requests are made, since
we're likely to need to load them anyway.


Xpath is not been clicked just during the execution

Hello,
I´m trying to click on an element that is available in Chrome and if I look for the element using the expression at the chrome console using the command below the element is selected:
$x("//div[@instance-name='action-button-click']//*[contains(@class,'text')]//child::span[normalize-space(text())='Add To Order']")
The Chrome is able to found the element in the screen, but when I run it with the opentest the Log in the opentest shows that the element is not available to be clicked according to the log (included at the end)
Do you know something that can help me in this case?
OpenTest version number - 1.2.1
Steps to reproduce:
Click at an element using this xpath:
{ xpath: "//div[@instance-name='action-button-click']//*[contains(@class,'text')]//child::span[normalize-space(text())='{CHF_LOOP-MEAL_ADD-TO-ORDER}']" }
Relevant log information:
Caused by: java.lang.RuntimeException: There was an error while executing action no. 20 (org.getopentest.selenium.Click) in segment 1 of test Kiosk/FastFail/Japan-2.1/NGKQA-12008-ItemOnly - PayAtCounter - Pickup - Grill - Donation Ada.
The action definition was:
{
"action": "org.getopentest.selenium.Click",
"args": {
"locator": {
"xpath": "//div[@instance-name='action-button-click']//[contains(@class,'text')]//child::[normalize-space(text())='Add To Order']"
}
},
"description": "Click in Add To order Button"
}
at org.getopentest.base.TestActor.executeTestSegment(TestActor.java:2080)
... 3 more
Caused by: java.lang.RuntimeException: Failed executing action org.getopentest.selenium.Click with arguments {"locator":{"xpath":"//div[@instance-name='action-button-click']//[contains(@class,'text')]//child::[normalize-space(text())='Add To Order']"}}
at org.getopentest.base.TestActor.executeActionByDef(TestActor.java:1778)
at org.getopentest.base.TestActor.executeTestSegment(TestActor.java:2030)
... 3 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Failed clicking on element By.xpath: //div[@instance-name='action-button-click']//[contains(@class,'text')]//child::[normalize-space(text())='Add To Order']
at org.getopentest.base.TestActor.executeActionByClassName(TestActor.java:1583)
at org.getopentest.base.TestActor.executeActionByDef(TestActor.java:1662)
... 4 more
Caused by: java.lang.RuntimeException: Failed clicking on element By.xpath: //div[@instance-name='action-button-click']//[contains(@class,'text')]//child::[normalize-space(text())='Add To Order']
at org.getopentest.selenium.Click.run(Click.java:34)
at org.getopentest.base.TestActor.executeAction(TestActor.java:1484)
at org.getopentest.base.TestActor.executeActionByClassName(TestActor.java:1560)
... 5 more
Caused by: org.openqa.selenium.TimeoutException: Expected condition failed: waiting for element to be clicked: [[ChromeDriver: chrome on XP (64645751da9249e270545a10acca0b3a)] -> xpath: //div[@instance-name='action-button-click']//[contains(@class,'text')]//child::[normalize-space(text())='Add To Order']] (tried for 10 second(s) with 500 milliseconds interval)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'RSANTOS-N', ip: '<IP_ADDRESS>', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_241'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.35.528161 (5b82f2d2aae0ca..., userDataDir: C:\Users\rsantos\AppData\Lo...}, cssSelectorsEnabled: true, databaseEnabled: false, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: , unhandledPromptBehavior: , version: 84.0.4147.135, webStorageEnabled: true}
Session ID: 64645751da9249e270545a10acca0b3a
at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:95)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:272)
at org.getopentest.selenium.Click.run(Click.java:32)
... 7 more
Test session has completed

Are there multiple elements that are matched by that XPath selector? If so, you must specify which one you want. For example, if you want the first one, you'd do this:
(//div[@instance-name='action-button-click']//*[contains(@class,'text')]//child::*[normalize-space(text())='Add To Order'])[1]

Hi Adrian,
Unfortunately this not work, I think that something in the application is changing when we click over some options, cause if we don´t click all the options before works fine.
It´s related to K# (McD) do you know something else that we can try to do?
Thanks in advance

Even if the UI is changing when clicking some of the options, as long as the element you want to click on is visible on the screen you should be able to adjust your XPath so that it matches the element. Continue using the Chrome dev tools and the $x function to test your locators as you advance through defining your test one step at a time. If the element is selectable using the $x function, it'll also be available in OpenTest - I have never seen a scenario where that's not the case. I know that coming up with a working XPath locator can sometimes feel like black magic, but believe me - it's all about getting the locators right.

Make sure you check to eliminate any timing issues by inserting a wait before this call. Always good to check for that whenever you have issues locating something that you expect to be on the page.

@samelawrence OpenTest attempts to automatically wait for UI elements for up to 10 seconds (by default), so normally there shouldn't be a need for inserting waits into the script. One other possible problem is that some UI elements get created automatically when the user hovers over an area of the screen, but it doesn't sound like it's the case here.

Hi,
@samelawrence sometimes I need to include a delay before the step to click (I know that opentest wait 10 sec by default, but sometimes it doesn´t work)
I could see that in some pages the xpath is founding more than 1 element, I´ll try to use an xpath with more details instead of some generic. and let you know.
Thanks in advance

@dieperei If you find that the default explicit wait of 10 seconds is not enough, you can change it by using the `` global argument:
- description: Click the submit button
  action: org.getopentest.selenium.Click
  args:
    locator: { id: submit }
    $explicitWaitSec: 20

If an XPath selector finds more than one element, you can use the subscript operator: (//...)[1].

@adrianth @dieperei That 10-second wait is news to me. Is that configurable somewhere, or does it need to be enabled? I definitely get failures that I can resolve by inserting a 2-second wait in a few places. It's annoying, and the auto-retry feature is the one I miss most from Cypress. Any more info on this 10-second wait behavior would be appreciated. Is this documented?

@samelawrence This is only partially documented - there's definitely room for improvement. The explicit wait interval can be configured in two places:

In the actor.yaml configuration file. The default value is 10 seconds and this wait interval is used by all Selenium keywords.
In the $explicitWaitSec argument of a specific test action, if the default of 10 seconds is not enough.

Please note that the default of 10 seconds should be more than enough for the vast majority of use cases. Also, OpenTest keywords do not just wait for 10 seconds, but they try looking for the element repeatedly every 500 ms, for the duration of that wait interval so that, if the element appears on the page sooner than 10 seconds, the test can continue right away. If the element is still not found after 10 seconds (of whatever duration was specified in the $explicitWaitSec argument) the test will fail.

@adrianth My actor.yaml file has a explicitWaitSec: 20 line, but no line for defaultWaitSec. Should I add one? Does the $explicitWaitSec value refer to the period that will be waited before that test step executes, or after it does? I've been using:
- description: Wait 2 seconds
    script: $delay(2000)

... as a way to insert waits between steps. Should I stop doing this? Thanks for your time!

@samelawrence  There is no defaultWaitSec parameter - it sounds like you have your actor configured correctly.
You shouldn't need the calls to $delay in most of the common scenarios. In fact, those calls delay your test unnecessarily in many cases, because the delay will happen even if the UI element is already displayed and waiting for you to interact with. Here's how OpenTest behaves: when an element can't be found, it'll keep retrying every 500ms until the element is found. If the element is not found after 10 seconds (or whatever the value of your explicitWaitSec parameter), the test will fail. Because of this behavior, OpenTest will only wait until the element appears on the page and not longer, as is the case with $delay.
Also, I would advise you go back to the default value of 10 seconds fo your explicitWaitSec parameter, otherwise, all your tests will take 20 seconds to fail whenever an element is not found. If you really think that some UI element can legitimately take longer than 10 seconds to appear on the page, you can always override the explicit wait interval for a single test action by using the $explicitWaitSec argument.

@dieperei If you find that the default explicit wait of 10 seconds is not enough, you can change it by using the $explicitWaitSec global argument:
- description: Click the submit button
  action: org.getopentest.selenium.Click
  args:
    locator: { id: submit }
    $explicitWaitSec: 20

If an XPath selector finds more than one element, you can use the subscript operator: (//...)[1].

Hi @adrianth, I´m using this selector but still not working for this scenario. :( ... I´m still looking to what is the cause in the UI. Thanks for the help

@adrianth All of this is very interesting to hear you say, because we have tests which fail unless we insert a 2-second forced $delay, and they definitely are not taking 10/20 seconds to render the element. So, I'm not sure what's going on with our implementation. For now, we have to keep our explicit $delay calls or some of our tests fail. I will reset our default to 10 seconds and see if that helps at all.

@samelawrence If you find that you need $delay, I would be curious to know what is the very next test action you are running after the call to $delay. It might be that there's a bug in the waiting logic for that particular keyword. Please let me know what is the keyword that you are using after $delay and I'll take a look at it to make sure it works as intended.

@samelawrence in my case the same, in some steps we need to include the delay to opentest click in the element. @adrianth we normally are using click or assertElementVisible, if we remove the $delay the test fail, and with the $delay it passes.

@dieperei I just checked and both the Click and AssertElementVisible keywords implement the waiting logic, which means they should be waiting for 10 seconds before failing the test. If you don't use $delay, do you see the tests failing immediately or are they failing after 10 seconds of wait time?

If I don´t use the $delay, the test doesn´t fail immediately, and in the log is been recorded that Opentest waited for 10 sec, but if I include the delay doesn´t changing anything, the test is passing.

@adrianth here is an example where the explicit waits are required for our tests to pass reliably. They don't always fail, but as we run tests on different machines and in CI, we find it more stable to include these waits.
description: Open Register
actions:
  - description: Enter manager ID
    action: org.getopentest.appium.SendKeys
    args:
      locator: $data("locators").managerunlock.id
      text: $macroArgs.user.id
  - description: Wait 2 seconds
    script: $delay(2000)
  - description: Enter manager Password
    action: org.getopentest.appium.SendKeys
    args:
      locator: $data("locators").managerunlock.password
      text: $macroArgs.user.password
  - description: Wait 1 seconds
    script: $delay(1000)
  - description: Tap "Confirm" Button
    action: org.getopentest.appium.Tap
    args:
      locator: $data("locators").managerunlock.confirmation
  # Verify Register ID
  - description: Verify Register ID Displayed Correctly
    action: org.getopentest.appium.AssertElementText
    args:
      locator: $data("locators").actionbarglobal.register
      text: $macroArgs.register
  # Verify Store ID
  - description: Store ID Displayed Correctly
    action: org.getopentest.appium.AssertElementText
    args:
      locator: $data("locators").actionbarglobal.store
      text: $macroArgs.store

OK, this sounds like there's some slowness in you application that requires some extra wait times. The default explicit wait for all actions is 10 seconds and you are adding an extra 1 or 2 seconds for two of them to a total of 11 and 12 seconds, respectively. This can be better resolved by specifying a longer explicit wait interval to the actions that require it. Also, I would increase that to 15 seconds, to make sure things run fine even on very slow machines/environments. Just to clarify, this will not make the test slower - the test will still run as fast as your application is able to perform. Here's how the test should look like:
description: Open Register
actions:
  - description: Enter manager ID
    action: org.getopentest.appium.SendKeys
    args:
      locator: $data("locators").managerunlock.id
      text: $macroArgs.user.id

  - description: Enter manager Password
    action: org.getopentest.appium.SendKeys
    args:
      locator: $data("locators").managerunlock.password
      text: $macroArgs.user.password
      $explicitWaitSec: 15

  - description: Tap "Confirm" Button
    action: org.getopentest.appium.Tap
    args:
      locator: $data("locators").managerunlock.confirmation
      $explicitWaitSec: 15

The benefit of using $explicitWaitSec instead of $delay is that the test can run faster as your application or test environment becomes faster. For example, the $delay action will cause a 2 second delay no matter how fast your application is. Even if the element you're looking for is displayed in 300ms, your test will still wait for a minimum of 2 seconds.
There's one big caveat here: I've seen some poorly coded applications that show a UI element for a brief moment and hide it soon after that, only to show it again after a few seconds. If that's your case, then your only choice is to use $delay, like you are doing today. If you don't, there's a chance the SendKeys action will look for the UI element and find it, but when it tries to actually enter the text in the text box, the element will not be on the screen anymore, which will cause the action to fail. This might very well be the reason for the flakiness you noticed in your test. I hope that all makes sense.

@adrianth Thank you for these comments. I've implemented some of what you've suggested into our project and am seeing some improvements.


Cask linux

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.
[ ] Have you successfully run brew tests with your changes locally?

the hierarchy of cask commands requires macOS. Moving it under extend/os makes Homebrew/brew compatible with other Operating Systems.

@sjackman, please review

I'd be included to put this file under os/mac/cmd/cask.rb rather than extend/, and modify the logic that searches for commands to include the directory os/mac/cmd/ before cmd/ on macOS.

done!

the hierarchy of cask commands requires macOS.

What happens if you run brew cask as-is?

@reitermarkus I'd love your thoughts on this.

I think this is a bit overkill, and I agree with https://github.com/Homebrew/brew/pull/3325#discussion_r145366023.

What happens if you run brew cask as-is?

# Removed current Linuxbrew's `odie` guard
$ brew cask
==> Tapping caskroom/cask
Cloning into '/home/linuxbrew/.linuxbrew/Library/Taps/caskroom/homebrew-cask'...
remote: Counting objects: 3854, done.
remote: Compressing objects: 100% (3838/3838), done.
remote: Total 3854 (delta 30), reused 547 (delta 12), pack-reused 0
Receiving objects: 100% (3854/3854), 1.32 MiB | 0 bytes/s, done.
Resolving deltas: 100% (30/30), done.
Checking connectivity... done.
Tapped 0 formulae (3,862 files, 4.2MB)
brew-cask provides a friendly homebrew-style CLI workflow for the
administration of macOS applications distributed as binaries.

Commands:

    --version              displays the Homebrew-Cask version
    audit                  verifies installability of Casks
    cat                    dump raw source of the given Cask to the standard output
    cleanup                cleans up cached downloads and tracker symlinks
    create                 creates the given Cask and opens it in an editor
    doctor                 checks for configuration issues
    edit                   edits the given Cask
    fetch                  downloads remote application files to local cache
    home                   opens the homepage of the given Cask
    info                   displays information about the given Cask
    install                installs the given Cask
    list                   with no args, lists installed Casks; given installed Casks, lists staged files
    outdated               list the outdated installed Casks
    reinstall              reinstalls the given Cask
    search                 searches all known Casks
    style                  checks Cask style using RuboCop
    uninstall              uninstalls the given Cask
    zap                    zaps all files associated with the given Cask

See also "man brew-cask"
Error: Unknown command:

[linuxbrew@6c72c34c91f9] [Wed Oct 18 13:22:03] [Last Exit Code: 1]
~/.linuxbrew/Library/Homebrew
(master) $ brew cask cat
Error: This command requires a Cask token.

[linuxbrew@6c72c34c91f9] [Wed Oct 18 13:22:09] [Last Exit Code: 1]
~/.linuxbrew/Library/Homebrew
(master) $ brew cask info
Error: This command requires a Cask token.

(master) $ brew cask cat
Error: This command requires a Cask token.

What happens if you specify an actual cask, though. brew cask info 1password, for instance?

(master) $ brew cask info 1password
1password: 3.8.22
https://1password.com/
Not installed
From: https://github.com/caskroom/homebrew-cask/blob/master/Casks/1password.rb
==> Name
1Password
==> Artifacts
1Password.app (App)

(master) $ brew cask install 1password
==> Creating Caskroom at /home/linuxbrew/.linuxbrew/Caskroom
Error: No such file or directory - /usr/sbin/chown
Follow the instructions here:
  https://github.com/caskroom/homebrew-cask#reporting-bugs
/home/linuxbrew/.linuxbrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/open3.rb:199:in `spawn'
/home/linuxbrew/.linuxbrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/open3.rb:199:in `popen_run'
/home/linuxbrew/.linuxbrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/open3.rb:95:in `popen3'
/home/linuxbrew/.linuxbrew/Library/Homebrew/cask/lib/hbc/system_command.rb:80:in `each_output_line'
/home/linuxbrew/.linuxbrew/Library/Homebrew/cask/lib/hbc/system_command.rb:25:in `run!'
/home/linuxbrew/.linuxbrew/Library/Homebrew/cask/lib/hbc/system_command.rb:14:in `run'
/home/linuxbrew/.linuxbrew/Library/Homebrew/cask/lib/hbc/caskroom.rb:15:in `ensure_caskroom_exists'
/home/linuxbrew/.linuxbrew/Library/Homebrew/cask/lib/hbc.rb:40:in `init'
/home/linuxbrew/.linuxbrew/Library/Homebrew/compat/hbc.rb:18:in `init'
/home/linuxbrew/.linuxbrew/Library/Homebrew/cask/lib/hbc/cli.rb:166:in `run'
/home/linuxbrew/.linuxbrew/Library/Homebrew/cask/lib/hbc/cli.rb:131:in `run'
/home/linuxbrew/.linuxbrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/home/linuxbrew/.linuxbrew/Library/Homebrew/brew.rb:99:in `<main>'

(master) $ brew cask install 1password

I think this is the command that could reasonably be interpreted to not work on Linux. I think it's a good thing that brew cask info 1password can work on Linux.

Closing per https://github.com/Homebrew/brew/pull/3325#issuecomment-338206199


Add caching inode store

This PR adds a caching inode store that can be placed in from of the rocks inode store to take advantage of master memory resources by storing some amount of metadata on-heap
The core logic is in Cache.java and CachingInodeStore.java

Our original implementation used Guava’s CacheBuilder, but we found that it consumed too much CPU when dealing with tens of thousands of operations per second. We fixed the bottleneck by implementing our own basic cache built on top of the standard library ConcurrentHashMap.

Had you considered Caffeine and if so, what were your thoughts?


Translated to Brazilian Portuguese.

I'm not sure if the folder should be pt-Br or just pt, but after I saw the zh-Hans.lproj and zh-Hant.lproj I decided to use pt-Br.lproj.
(Note: keep in mind that we also have the Portuguese language from Portugal).

Thank you! I'll merge it and add in the next version :+1:

If you want you can do the same thing in BFKit Swift!
Otherwise I'll do it, no problem


[bug] Firefox showing scan QR for all wallet options.

Is there an existing issue for this?

[X] I have searched the existing issues

RainbowKit Version
0.12.16
wagmi Version
0.12.18
Current Behavior
Many of our users have raised support tickets with us recently about not being able to sign in to our dapp via Firefox. Despite having the necessary extensions installed and being on desktop devices, they are always presented with the QR code for sign-in.
Expected Behavior
Users should be shown the standard sign-in flow via installed extensions.
Steps To Reproduce

In a Firefox browser, visit the dapp.
Click "Connect" in the top right corner.
Selecting one of the available wallet options will display QR codes.

Link to Minimal Reproducible Example (CodeSandbox, StackBlitz, etc.)
https://app.rysk.finance/
Anything else?
The dapp front-end source code can be found here.

Hey @MeanBoyCousin. I've just taken a look at your repo and for me it seems to be working fine locally:

Few things i can point out here is that on production (https://app.rysk.finance) the window.ethereum is disabled which means the wallets will be marked as "not ready" which leads to this issue. You can click on inspect -> console -> type in window.ethereum.
Production:

Local:

When you deploy on production does something disable the window.ethereum ? If not then can you try updating your wagmi and @rainbow-me/rainbowkit to the latest one and tell me if that works ?

@KosmosKey Sorry for the late reply, totally forgot about this.
From what I can tell, this seems to be related to our CSP. I found this very old thread that seems to have little traction and sadly, it seems that without downgrading our CSP to allow inline scripts there isn't much we can do.

Hey @MeanBoyCousin. All good!
Yeah that's a bit rough. Honestly there isn't much we can do on our side since we use window.ethereum to get the injected providers. If the window.ethereum is not available we generate a QR code for the user to connect via wallet connect.
Hopefully there will be some solutions to CSP in the future, but if you're facing with any other issues feel free to create another issue. I'll close this one for now 🙏


Fixed #29994 -- added warning about FileSystem cche not working for large number of files

https://code.djangoproject.com/ticket/29994

Typo in the title 'cche' > 'cache'

@sheenarbw Do you have time to keep working on this?

Closing due to inactivity.