smartctl_exporter does not notice if previous smartctl did not finish (hangs)

I ran into an incident recently where smartctl hung due to a bad disk. smartctl_exporter continued to spawn new smartctl processes to monitor the disk even though the previous run did not finish. smartctl_exporter should detect if the previous process finished before starting a new process. I don't know how many processes were spawned before I was aware of the situation. I'm guessing several hundred.
Here's the processes. I noticed the PPID is 1, not the PID of smartctl_exporter.
$ ps -ef | grep smartctl
root       343     1  0 20:33 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root       369     1  0 20:33 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root       374     1  0 20:33 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root       687     1  0 20:35 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root       702     1  0 20:35 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
...
root      5483     1  0 21:16 ?        00:00:00 /usr/local/bin/smartctl_exporter
root      5513  5483  0 21:16 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root      5607  5260  0 21:17 pts/2    00:00:00 smartctl -a /dev/sdc
root      6014  4750  0 21:20 pts/1    00:00:00 grep --color=auto smartctl
root     29674     1  0 20:12 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root     29675     1  0 20:12 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root     29682     1  0 20:12 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root     29684     1  0 20:13 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
...
root     32744     1  0 20:32 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root     32746     1  0 20:32 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc
root     32751     1  0 20:32 ?        00:00:00 /usr/sbin/smartctl --json --xall /dev/sdc

It wasn't until I tried to stop the smartctl_exporter service that systemd tried to clean up the processes. Unfortunately, systemd could not kill the processes either.
Jul 04 21:14:05 sns5 kernel: ata5: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
Jul 04 21:14:05 sns5 kernel: ata5.00: configured for UDMA/33
Jul 04 21:14:39 sns5 smartctl_exporter[1721]: [Warning] S.M.A.R.T. output reading error: exit status 4
Jul 04 21:14:39 sns5 smartctl_exporter[1721]: [Warning] Some SMART or other ATA command to the disk failed, or there was a checksum error in a SMART data structure
Jul 04 21:14:43 sns5 systemd[1]: Stopping smartctl exporter service...
Jul 04 21:15:08 sns5 kernel: ata5: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
Jul 04 21:15:08 sns5 kernel: ata5.00: configured for UDMA/33
Jul 04 21:15:28 sns5 systemd-logind[984]: [🡕] New session 12131 of user suseuser.
Jul 04 21:15:28 sns5 systemd[1]: Started Session 12131 of user suseuser.
Jul 04 21:15:28 sns5 sshd[5042]: pam_unix(sshd:session): session opened for user suseuser by (uid=0)
Jul 04 21:15:43 sns5 sudo[5259]: suseuser : TTY=pts/2 ; PWD=/root ; USER=root ; COMMAND=/bin/bash
Jul 04 21:15:43 sns5 sudo[5259]: pam_unix(sudo-i:session): session opened for user root by suseuser(uid=5000)
Jul 04 21:16:11 sns5 kernel: ata5: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
Jul 04 21:16:11 sns5 kernel: ata5.00: configured for UDMA/33
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: State 'final-sigterm' timed out. Killing.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Killing process 29674 (smartctl) with signal SIGKILL.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Killing process 29675 (smartctl) with signal SIGKILL.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Killing process 29682 (smartctl) with signal SIGKILL.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Killing process 29684 (smartctl) with signal SIGKILL.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Killing process 29688 (smartctl) with signal SIGKILL.
...
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Killing process 4741 (smartctl) with signal SIGKILL.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Killing process 4962 (smartctl) with signal SIGKILL.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Failed with result 'timeout'.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Unit process 29674 (smartctl) remains running after unit stopped.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Unit process 29675 (smartctl) remains running after unit stopped.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Unit process 29682 (smartctl) remains running after unit stopped.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Unit process 29684 (smartctl) remains running after unit stopped.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Unit process 29688 (smartctl) remains running after unit stopped.
...
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Unit process 4542 (smartctl) remains running after unit stopped.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Unit process 4547 (smartctl) remains running after unit stopped.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Unit process 4741 (smartctl) remains running after unit stopped.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Unit process 4962 (smartctl) remains running after unit stopped.
Jul 04 21:16:14 sns5 systemd[1]: Stopped smartctl exporter service.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Found left-over process 29674 (smartctl) in control group while starting unit. Ignoring.
Jul 04 21:16:14 sns5 systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Found left-over process 29675 (smartctl) in control group while starting unit. Ignoring.
Jul 04 21:16:14 sns5 systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Found left-over process 29682 (smartctl) in control group while starting unit. Ignoring.
Jul 04 21:16:14 sns5 systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Found left-over process 29684 (smartctl) in control group while starting unit. Ignoring.
Jul 04 21:16:14 sns5 systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
Jul 04 21:16:14 sns5 systemd[1]: smartctl_exporter.service: Found left-over process 29688 (smartctl) in control group while starting unit. Ignoring.

What would I like to see happen?
It would be nice if smartctl_exporter checked if the previous process exited before spawning a new smartctl process. Nothing can be done for smartctl hanging on a bad disk but we can prevent smartctl_exporter from making things worse.

Also it will be nice after some threshold to blacklist device that hang smartctl, and put metric, for example smartctl_device_blacklist to 1
This will prevent to issues like described @NiceGuyIT, continue to monitor alive disks and can be handled via blacklist metric

FWIW, this feels like a pretty critical bug to me...


updated code examples to match provided wiring diagram

The diagrm at https://github.com/bridystone/SevSegShift/blob/ShiftRegister/examples/SevSegShift_Counter/SevSegShift.png shows pins 11, 12, and 13 on the Arduino, but examples incorrectly coded to 10, 11, and 12 in reverse order.

haha - good catch.
Have you tested with PIN 13?
I remember having problems with this default PIN, because it was used by several other connection (USB message LED, etc)

I have an UNO wired up to match the diagram right now, and when my NANOs came in, I wired them up the same to test, so that's two different types of boards that work with Pin 13 no problems.

That's good news - thanks for your efforts!

Serial.begin in the setup() and Serial.print("something") in the loop?

Running a little late on getting back to you on this, but:

That's good news - thanks for your efforts!

Serial.begin in the setup() and Serial.print("something") in the loop?

Yes, none of my projects have been deployed yet, so they all have pretty thorough serial debugging throughout the sketches.


Add High Score Feature

Develop a high score tracking system that displays the top scores achieved by players.

can you assign me to this thanks robber man!

Good luck @rubendijkstra02 💪🏻


install ninja

what the cmake generator "Ninja Multi-Config" has over default "Unix Makefiles" https://github.com/externpro/externpro/issues/2#issuecomment-1947520796
https://github.com/ninja-build/ninja
https://ninja-build.org/manual.html
https://www.kitware.com/multi-config-ninja-generator-in-cmake-3-17/
https://cmake.org/cmake/help/latest/generator/Ninja Multi-Config.html
https://rockylinux.pkgs.org/8/rockylinux-powertools-x86_64/ninja-build-1.8.2-1.el8.x86_64.rpm.html
Install ninja-build rpm package:
# dnf --enablerepo=powertools install ninja-build

interesting reading https://neugierig.org/software/blog/2020/05/ninja.html

completed with commit referenced above

debugging ninja

https://gitlab.kitware.com/cmake/cmake/-/issues/20114
ninja -v -d explain
ninja -t deps


spark-k8s and pyspark-k8s: Add s3a and abfs libs

Fixes #172

Adding tests for this in the operator is tracked in https://github.com/stackabletech/docker-images/issues/172


AP paper solution uploaded

AP paper solution 2k18 added

Thank you sir.
I have made change in the file name.
On Sun, Oct 14, 2018 at 7:34 PM Yashovardhan Agrawal <
<EMAIL_ADDRESS>wrote:

@yashovardhanagrawal requested changes on this pull request.
Hey thanks for contributing!
I would request you to just change the file name a bit, removing the
spaces and replacing them by dashes -
since these files can be accessed online it's mostly better to have a name
without spaces for a better navigation
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/OpenSouce-LNMIIT/paper.lnmiit/pull/98#pullrequestreview-164499929,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AfNe-nTKfzXGsr2ZDmKAeK-GPnn-NEL-ks5uk0SCgaJpZM4XbD6j
.


AttributeError: 'module' object has not attribute 'scan'

Hi,
I am trying to run the examples provided. However, it complains that tf module has no object 'scan'.  I am using Tensorflow version 0.7.1 installed via pip for Python 2.7

@kilickaya, Please update tensorflow. After that you will have will not face this problem.
Please follow the link to update your tensorflow.
https://www.tensorflow.org/versions/r0.11/get_started/os_setup.html#pip-installation


Issue with timezone.

Hi,
I'm having some issues with the timezone and how they are handled. I've created a small demo repo with the issue here.
Looks like the timezone, for the example it was set on "Europe/Rome", is lost when it goes to write on db.
If I do a time.Now() I'll get the right time
check timezone: 2023-09-05 14:16:21.909268 +0200 CEST m=+0.144217418

If I do the insert calling time.Now() I lose the timezone on the DB.
created first user: {
  "id": "clm69yqsh00001n5t1itlcvak",
  "name": "FirstUser",
  "lastLogin": "2023-09-05T12:16:21.909Z"
}

doing a bit of debug, in the engine/request.go on the Do method when it do the request the payload.Query looks fine, or at least with the right time.
mutation {result: createOneUser(data:{name:"FirstUser",lastLogin:"2023-09-05T14:16:21.909309+02:00",},) {id name lastLogin }}

but then in the response the timezone was lost
{"id":"clm69yqsh00001n5t1itlcvak","name":"FirstUser","lastLogin":"2023-09-05T12:16:21.909Z"}

Am i doing something wrong? or am i missing something?

Timezones open a whole big discussion which I'm not sure I want to dig in at this time.
My suggestion would be to run your Go app using UTC timezone always, and make sure your database also runs in UTC.
You can do so by setting TZ=UTC:
TZ=UTC go run .

Let me know if you actually need to use your app in a specific timezone, and if so, why you need it, as it would help me prioritize it.

Actually, you are right that the timezone information gets lost, as I believe it just saves the time in UTC right now, which you might want to request as a feature.
Just to make sure, is the time itself actually correct? As the returned time would be UTC, does it still actually have the correct time, even if it's a different timezone? Or is it shifting the time by 2 hours whenever you save and find the item again?

Hi,
actually it's not going to be a big deal handle the timezone in the code for now. Currently I'm using this library on side project, for track different auction markets, that's why I need timezones; and to test it and see if I can use it on some production service. Btw as I said for now it's not a big deal handle it on code-side.
About your questions, the time itself is correct, the reported "logs" are with the right timezones. The DB save it in UTC. Before adding the timezone on Go, the saved datetime was right (both in UTC).
I dunno your timeline on new features, btw tnx to resurrect this library :),  I can try to look bit deeper on the issue to have more context


HausdorffERLoss is not differentiable

I wrote a doctest for the erosion based hausdorff loss and I found it is not differentiable:
    Examples:
        >>> image_preds = torch.tensor([[
        ...    [0, 0.1, 0.1, 0],
        ...    [0, 0.3, 0.6, 0],
        ...    [0, 0.4, 0.8, 0],
        ...    [0, 0, 0, 0],
        ... ]], requires_grad=True)[None]
        >>> image_gt = torch.tensor([[
        ...    [0, 1, 0, 0],
        ...    [1, 1, 1, 0],
        ...    [1, 1, 1, 0],
        ...    [0, 0, 0, 0],
        ... ]])[None]
        >>> hdloss = HausdorffERLoss(from_logits=False)
        >>> hdloss(image_preds, image_gt)
        tensor(0.0625)
        >>> hdloss(image_preds, image_gt).backward()

I would suspect something is missing from your implementation.

Hi, @shijianjian
I do not implement the erosion-based HD loss.
I only use the DTM-based HD loss in my repo.

Isn't this the erosion based HD loss?
https://github.com/JunMa11/SegLoss/blob/master/losses_pytorch/hausdorff.py#L83-L173

Oh, I apologize for the inconvenience.
The erosion-based HD loss was copied from https://github.com/SilmarilBearer/HausdorffLoss and I have not tested it.
https://github.com/JunMa11/SegLoss/blob/71b14900e91ea9405d9705c95b451fc819f24c70/losses_pytorch/hausdorff.py#L15
I would recommend raising an issue in the original repo.

is the HausdorffDLoss possible for multi class segmentation？

@JunMa11 Sure.
@lucafei It worked in multi-label segmentation from BCHW to BCHW.

Hi, I wonder why there is no normalize operation when calculating edt in HausdorffDTLoss, the loss value may be too large


viewer: double clicking an entity in the spatial view should put it into focus

(Following a standup discussion)
The controversial follow-up to #917: generally the same idea, except that it would also work when directly double-clicking on an entity through the spatial view.
This requires some design work; some ideas/thoughts that were thrown around:

only do so if the entity was already selected to begin with
what's the expected with e.g. point clouds (i.e. how does one click on a point cloud vs. a point in the point cloud)

Our current behavior is that we focus on the 3d space position that is double clicked.
This can be more useful than focusing on an entity, but we could at the very least use the entity's/visualizer's bounding box that we need for

#917
anyways to position the camera a bit better.


Spreading tile loads across multiple subdomains?

Since browsers will only open a limited number of connections per domain, has anyone experimented with round-robin or randomizing the use of subdomains which all point to the same image files to speed up tile loading?

Yes, I use a hashing function so each tile is predictably loaded from the same sharded domain. It makes a difference for ye-olde browsers but is going to be less necessary when the world has moved to HTTP/2

Here's an example, suppose you have 4 sharded domains (e.g. using CNAMEs in DNS):

img1.myservice.com
img2.myservice.com
img3.myservice.com
img4.myservice.com

The get-tile URL will spread the requests out but consistently (which helps improve potential hits with any CDN / proxy caching):
var url = 'http://img$.myservice.com';
_getTileUrl: function (level, x, y) {
  var shard = 1;
  if (x % 2) shard += 2
  if (y % 2) shard += 1
  return url.replace(/\$/, shard) + '/image_id/' + x +'_' + y + '.jpg';
}

I'd like to experiment with this approach.  I'm working on a canvas of dynamically generated tiles (200ms+/tile), but I need to horizontally scale the generation across multiple servers.  Can anyone offer any advice on how to do it please?  I'm happy to (try to) code up a plugin to replace the ImageTileSource.getTileUrl function if that's the way?  Any docs/pointers appreciated.

I think it may be as simple as the code example above from @CaptainCodeman. Take a look at http://openseadragon.github.io/examples/tilesource-custom/ for an example of where the getTileUrl function fits in.

Take a look at http://openseadragon.github.io/examples/tilesource-custom/ for an example of where the getTileUrl function fits in.

That looks great.  Is the tilesource-custom approach compatible with IIIFTileSource?  I'm trying to implement the 'monkey patch' advocated here in this SO answer.
    var tileSource = {
        "@context": "http://iiif.io/api/image/2/context.json",
        "@id": `{{ tile_source }}`,
        "width": {{ width }},
        "height": {{ height }} ,
        "profile": ["http://iiif.io/api/image/2/level2.json"],
        "protocol": "http://iiif.io/api/image",
        "tileOverlap": 0,
        "tiles": [{
           "scaleFactors": [1, 2, 4, 8, 16, 32],
           "width": 256
        }],
        "getTileUrl": function( level, x, y ) {
            return $.IIIFTileSource.prototype.getTileUrl.call(this, level, x, y);
        }
    };
    zoomviewer.init([tileSource]);

but the instant I specify the getTileUrl element, I get a start-up error:
[TileSource.getTileSize] is deprecated. Use TileSource.getTileWidth() and TileSource.getTileHeight() instead

Hmm... as it turns out, including getTileUrl in the tile source flags it as being a custom tile source, so it doesn't actually activate the IIIF code. Because of that, you should load the IIIF tile source as normal but then monkey patch it afterwards. This should do it:
var tileSource = {
   "@context": "http://iiif.io/api/image/2/context.json",
   "@id": `{{ tile_source }}`,
   "width": {{ width }},
   "height": {{ height }} ,
   "profile": ["http://iiif.io/api/image/2/level2.json"],
   "protocol": "http://iiif.io/api/image",
   "tileOverlap": 0,
   "tiles": [{
      "scaleFactors": [1, 2, 4, 8, 16, 32],
      "width": 256
   }]
};

var tileImageSpec = {
  tileSource: tileSource,
  success: function(event) {
    var tiledImage = event.item;
    tiledImage.source.getTileUrl = function( level, x, y ) {
      return OpenSeadragon.IIIFTileSource.prototype.getTileUrl.call(this, level, x, y);
    }
  }
}

zoomviewer.init([tileImageSpec]);


Get rid of "Reducing Package Dependencies" page

This page needs to be removed as it's apparently incorrect advice.
https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/reducing-dependencies
/cc @yishaigalatzer @ericstj

Closed with #767.


Refactor PrivateAttr to type-check like Field

Change Summary

Fix mypy assignment error when using PrivateAttr

PrivateAttr is renamed ModelPrivateAttr and modeled after ModelField
A PrivateAttr function now exists, modeled after Field

Documentation and error message are now more consistent between PrivateAttr and Field
Made changes to typing where needed

I did not add any unit tests because I'm unsure how to write a unit test for preventing mypy errors.
Related issue number
Fixes #2048.
Checklist

[x] Unit tests for the changes exist
[x] Tests pass on CI and coverage remains at 100%
[x] Documentation reflects the changes where applicable
[x] changes/<pull request or issue id>-<github username>.md file added describing change

Thanks for the feedback! I have added a PrivateAttr example to mypy/modules/success.py.

@MrMrRobat you implemented PrivateAttr originally, are you happy with this change?

Sure!


Reduce chunk write queue memory usage 1

This avoids wasting memory on the c.chunkRefMap by re-initializing it regularly. When re-initializing it, it gets initialized with a size which is half of the peak usage of the time period since the last re-init event, for this we also track the peak usage and reset it on every re-init event.
Very frequent re-initialization of the map would cause unnecessary allocations, to avoid that there are two factors which limit the frequency of the re-initializations:

There is a minimum interval of 10min between re-init events
In order to re-init the map the recorded peak usage since the last re-init event must be at least 1000 (objects in c.chunkRefMap).

When re-initializing it we initialize it to half of the peak usage since the last re-init event to try to hit the sweet spot in the trade-off between initializing it to a very low size potentially resulting in many allocations to grow it, and initializing it to a large size potentially resulting in unused allocated memory.
With this solution we have the following advantages:

If a tenant's number of active series decreases over time then we want that their queue size also shrinks over time. By always resetting it to half of the previous peak it will shrink together with the usage over time
We don't want to initialize it to a size of 0 because this would cause a lot of allocations to grow it back to the size which it actually needs. By initializing it to half of the previous peak it will rarely have to be grown to more than double of the initialized size.
We don't want to initialize it too frequently because that would also cause avoidable allocations, so there is a minimum interval of 10min between re-init events

This PR comes from https://github.com/grafana/mimir-prometheus/pull/131. We use it in Grafana Mimir to reduce memory usage in Mimir clusters with thousands of open TSDBs in a single process.
Related to https://github.com/prometheus/prometheus/pull/10874.

Before this change, we have seen this cumulative memory usage across pods in single Mimir deployment.

Legend:

zone-a using new chunk mapper without fix from this PR
zone-b and zone-c are using old chunk mapper before https://github.com/prometheus/prometheus/pull/10051

After applying change from this PR into zone-b and enabling new chunk mapper there, we can see that memory usage has improved compared to zone-a:

Legend:

zone-a using new chunk mapper without fix from this PR
zone-b using new chunk mapper with the fix from this PR
zone-c using old chunk mapper before https://github.com/prometheus/prometheus/pull/10051

Note that memory usage in zone-b still isn't the same as with old chunk mapper (zone-c), but second part is addressed by https://github.com/prometheus/prometheus/pull/10874

Could you say which metric is being graphed, please?  (working set?)

Query is:
sum by (zone) (label_replace(go_memstats_heap_inuse_bytes{job=~"cortex-dev-01/ingester.*"}, "zone", "$1", "pod", "(ingester-zone-.)-\\d+")) / 1e9

With pod names like ingester-zone-<a|b|c>-<number>.


pdp_interact_plot is incompatible with matplotlib 3.0.0

In ml1/lesson2-rf_interpretation.ipynb
Since we don't pin a matplotlib version, mine was updated to 3.0.0. This caused an issue because https://matplotlib.org/api/_as_gen/matplotlib.pyplot.clabel.html does not take contour_label_fontsize
After going back to 2.2.3, it was fine.

Thanks for your comment..!

How did you downgrade it to version 2.2.3 ?
When you downgrade, did the other functions like 'pdp.pdp_interact' effect (i.e did you have to change anything)?

I just pegged the version in the environment file. Everything else should work file


Guards treat windmills/grain mills as trespass zones even before war has started.

This is just a rehash of the discussion from the Nexus comments thread, transplanted here for your convenience in tracking it, and so that I can get notified about updates and respond in a timely manner.
When I approach grain mills, such as those found at Pelagia Farm near Whiterun, any nearby guards will draw their weapons, accuse me of trespassing, and warn me to leave. If I do not vacate quickly, they attack.
I have not started the civil war, and I'm not wearing any "colors," just some dwarven armor. I have tried turning off the disguise mechanic, but the guards still become hostile when I approach a grain mill.
Using "Get CWO Unstuck" in the MCM gave a message saying there was nothing to fix.

If it helps, the guards were running an AI package called "CWPatrolAndGuardWhileHoldConested."

The guard is part of these factions:

The script logger didn't make any log files in my documents folder, which I'm guessing is because I haven't actually even started the civil war yet for your scripts to even be running.
I created a new profile in MO, deactivated everything except for SKSE, USSEP, and CWO. Then I started a new game and used console to teleport outside of Whiterun so that I could get near a grain mill there. The guard near the grain mill accused me of trespassing in this test.

Also, it's been years since I've done a Skyrim playthrough, and I was beginning to wonder if maybe this is a vanilla mechanic that I just forgot existed. So, I did a sanity check by doing the same test as above with only SKSE active. The guard does not care that I'm near the mill when CWO is not running.

Thank you very much for consolidating the messages and moving this to GitHub ( I like it much better) I take it you updated to version 1.0.19 and are still having an issue. I have some free time this evening so I will run a few tests. Appreciate your patience with this!

Correct, this issue is still present in 1.0.19. The last two screenshots in the original post (of the guard's factions, and of the vanilla test) were both taken after upgrading to 1.0.19.

Thanks again for reporting this issue and your patience. I found it! If you get a chance, can you give this release a try? https://github.com/schofida/CWORR/releases/tag/v1.0.20
So there is a ContestedHold variable on the overarching CW quest that was never set before but since I am now using the built in functionality to start campaigns at holds after the battle for Whiterun, this variable is set to track what hold is set to be contested by you or your opposing faction. I set it right off the bat to Whiterun since that siege is always first. I didn't see that variable inherently doing anything so I thought nothing of it.
Turns out it was. That interaction and several others happening all around Skyrim were apparently implemented by Bethesda but never finished. Once CWO sets this value to something, it kind of wakes these interactions up.
It was a pain to find but I'm glad I know of this now.

Nice! 1.0.20 does fix it.
It's interesting how much of this questline Bethesda had cut out before release.
I'm glad you got to figure it out and I'm happy that I could provide useful enough information for you to even find the problem... Lol


Nginx config for signalr web sockets problem

The documentation mentions the following config to configure nginx for websockets:
server {
    listen        80;
    server_name   example.com *.example.com;
    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
+        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

Check in particular the highlighted line. I spent a long time trying to debug an issue preventing web sockets from working (signalr had to switch to another method). I finally found a couple places talking about nginx needing  proxy_set_header   Connection "Upgrade"; instead of "keep-alive", so I tried that out. This made web sockets work properly, but I started seeing another problem. Anything other than GET and OPTIONS requests were failing, and the failure message was related to CORS (false positive). I kept on looking even more and found something about proxy_set_header   Connection $http-connection;. This finally resulted in both web sockets and normal http requests working.
So to me, it kinda seems like this part in the docs is just completely wrong? I was never able to get web sockets to work with it, and my app was fairly simple.

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

ID: dcdd2c35-bf2b-2673-d150-303a8aaa54d2
Version Independent ID: 815fe034-c9fc-aee3-a8b5-f2e860b30302
Content: Host ASP.NET Core on Linux with Nginx
Content Source: aspnetcore/host-and-deploy/linux-nginx.md
Product: aspnet-core
Technology: aspnetcore-hostdeploy
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

@Rick-Anderson ... I'll keep an :eye: on this one. I've worked with this subject before.
That topic's guidance is for general config. The specific guidance for SignalR is in the SignalR Scale topic at ...
https://docs.microsoft.com/aspnet/core/signalr/scale#linux-with-nginx
... which goes with $connection_upgrade.
The cross-linked guidance in the Nginx docs indicates 'upgrade' ...
https://www.nginx.com/blog/websocket-nginx/
... with additional info at ...
http://nginx.org/en/docs/http/websocket.html

proxy_set_header Connection $http-connection;. This finally resulted in both web sockets and normal http requests working.

Open an issue for that scenario on the product unit repo at ...
https://github.com/dotnet/aspnetcore/issues
Since this isn't actionable here at the moment, we'll close for now while you ask engineering about it. Please add a cc: @guardrex to your opening issue comment over there. I'll re-open this and work it if we need to provide additional guidance. It's ok if you don't CC: me, but you would need to ping me back on this issue later to look at their response if you think we need additional guidance.

@guardrex I'm sorry I didn't notice because I went to the signalr docs home and searched for "nginx" in the sidebar. I keep forgetting this search links to other places sometimes... Thanks.

Open an issue for that scenario on the product unit repo at https://github.com/dotnet/aspnetcore/issues

Isn't this purely a docs issue though? Does this scenario require any changes beyond docs?

purely a docs issue though?

Not yet ... the guidance on what to set came from engineering, so they need to remark on the suitability of using something different. We do sometimes ping them on a doc issue, but your question will get a quicker response if you open it on the repo where they're actually working. It's best to refer them directly to the current guidance at ...
https://docs.microsoft.com/aspnet/core/signalr/scale#linux-with-nginx
... and then you can present your scenario and how $http-connection worked for you, basically asking them if that setting would have any undesirable outcomes ... gotchas! ... that might break or cause problems for an app.
I'll follow along the discussion. If they remark that your setting does make sense and under what circumstances, then it will be actionable for the docs. I'll re-open and work this issue based on what they say.

I see, makes sense. Thanks! Will open an issue there and CC you.


[SPARK-4923][REPL] Add Developer API to REPL to allow re-publishing the REPL jar

As requested in SPARK-4923, I've provided a rough DeveloperApi for the repl. I've only done this for Scala 2.10 because it does not appear that Scala 2.11 is implemented. The Scala 2.11 repl still has the old scala.tools.nsc package and the SparkIMain does not appear to have the class server needed for shipping code over (unless this functionality has been moved elsewhere?). I also left alone the ExecutorClassLoader and ConstructorCleaner as I have no experience working with those classes.
This marks the majority of methods in SparkIMain as private with a few special cases being private[repl] as other classes within the same package access them. Any public method has been marked with @DeveloperApi as suggested by @pwendell and I took the liberty of writing up a Scaladoc for each one to further elaborate their usage.
As the Scala 2.11 REPL conforms to JSR-223, the Spark Kernel uses the SparkIMain of Scala 2.10 in the same manner. So, I've taken care to expose methods predominately related to necessary functionality towards a JSR-223 scripting engine implementation.

The ability to get variables from the interpreter (and other information like class/symbol/type)
The ability to put variables into the interpreter
The ability to compile code
The ability to execute code
The ability to get contextual information regarding the scripting environment

Additional functionality that I marked as exposed included the following:

The blocking initialization method (needed to actually start SparkIMain instance)
The class server uri (needed to set the spark.repl.class.uri property after initialization), reduced from the entire class server
The class output directory (beneficial for tools like ours that need to inspect and use the directory where class files are served)
Suppression (quiet/silence) mechanics for output
Ability to add a jar to the compile/runtime classpath
The reset/close functionality
Metric information (last variable assignment, "needed" for extracting results from last execution, real variable name for better debugging)
Execution wrapper (useful to have, but debatable)

Aside from SparkIMain, I updated other classes/traits and their methods in the repl package to be private/package protected where possible. A few odd cases (like the SparkHelper being in the scala.tools.nsc package to expose a private variable) still exist, but I did my best at labelling them.
SparkCommandLine has proven useful to extract settings and SparkJLineCompletion has proven to be useful in implementing auto-completion in the Spark Kernel project. Other than those - and SparkIMain - my experience has yielded that other classes/methods are not necessary for interactive applications taking advantage of the REPL API.
Tested via the following:
$ export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
$ mvn -Phadoop-2.3 -DskipTests clean package && mvn -Phadoop-2.3 test

Also did a quick verification that I could start the shell and execute some code:
$ ./bin/spark-shell
...

scala> val x = 3
x: Int = 3

scala> sc.parallelize(1 to 10).reduce(_+_)
...
res1: Int = 55

Can one of the admins verify this patch?

Jenkins, test this please. Thanks a lot @rcsenkbeil for such a thorough treatment of this! LGTM in general, I made a minor comment.

Test build #25617 has started for   PR 4034 at commit 6dc1ee2.

This patch merges cleanly.

Test build #25617 has finished for   PR 4034 at commit 6dc1ee2.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
class SparkILoop(
   * @param id The id (variable name, method name, class name, etc) whose
   * Retrieves the class representing the id (variable name, method name,
   * @param id The id (variable name, method name, class name, etc) whose
   * @return Some containing term name (id) class if exists, else None
   * @param id The id (variable name, method name, class name, etc) whose
   * @param id The id (variable name, method name, class name, etc) whose
   * Retrieves the runtime class and type representing the id (variable name,
   * @param id The id (variable name, method name, class name, etc) whose
   * @param id The id (variable name, method name, class name, etc) whose

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

Jenkins, test this please.

Test build #25637 has started for   PR 4034 at commit c1b88aa.

This patch merges cleanly.

Test build #25637 has finished for   PR 4034 at commit c1b88aa.

This patch fails to build.
This patch merges cleanly.
This patch adds the following public classes (experimental):
class SparkILoop(
   * @param id The id (variable name, method name, class name, etc) whose
   * Retrieves the class representing the id (variable name, method name,
   * @param id The id (variable name, method name, class name, etc) whose
   * @return Some containing term name (id) class if exists, else None
   * @param id The id (variable name, method name, class name, etc) whose
   * @param id The id (variable name, method name, class name, etc) whose
   * Retrieves the runtime class and type representing the id (variable name,
   * @param id The id (variable name, method name, class name, etc) whose
   * @param id The id (variable name, method name, class name, etc) whose

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

Whoops, missed adding an import for the DeveloperApi on SparkCommandLine. Give me a minute to add it.

Took a little longer on an old computer, but I made sure it built successfully this time. Should hopefully be good to go now.

Jenkins ok to test. Jenkins, test this please.

Test build #25652 has started for   PR 4034 at commit 053ca75.

This patch merges cleanly.

Test build #25652 has finished for   PR 4034 at commit 053ca75.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
class SparkILoop(
   * @param id The id (variable name, method name, class name, etc) whose
   * Retrieves the class representing the id (variable name, method name,
   * @param id The id (variable name, method name, class name, etc) whose
   * @return Some containing term name (id) class if exists, else None
   * @param id The id (variable name, method name, class name, etc) whose
   * @param id The id (variable name, method name, class name, etc) whose
   * Retrieves the runtime class and type representing the id (variable name,
   * @param id The id (variable name, method name, class name, etc) whose
   * @param id The id (variable name, method name, class name, etc) whose

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

Thanks Chip - I will pull this in. After some more thought on this, I'm just going to pull this into master for 1.3+ and for 1.2 we'll just publish the original REPL with all the open permissions. My concern is giving people some time to adjust to the new locked down permissions before we ship it in a release.

@pwendell, that sounds like a good decision. Thanks for letting me know!


Minor MMM Example Notebook issues

In the MMM Example Notebook created by @juanitorduz , there is a plot that refers to z0 and z1 and z0 adstocked & saturated. But I think the notation at the top of the notebook implies that z refers to the "control" variables (i.e., "events" such as product launches, etc.).  But I didn't think these are adstocked or saturated?  I think there may be some labels that are mixed up.
This is the plot that confuses me, though there may be other instances that are similar:
for i, x in enumerate(["x1", "x2"]):
    sns.scatterplot(
        x=df[x],
        y=amplitude * beta_1 * df[f"{x}_adstock_saturated"],
        color=f"C{i}",
        ax=ax[i],
    )
    ax[i].set(
        title=f"$z_{i}$ contribution",
        ylabel=f"$\\beta_1 \cdot z_{i}$ adstocked & saturated",
    )

In addition, there is a section called Target Variable under which is the specification how all the components come together to generate the observed time series of sales. It looks like this:
df["intercept"] = 2.0
df["epsilon"] = rng.normal(loc=0.0, scale=0.25, size=n)

amplitude = 1_000
beta_1 = 3.0
beta_2 = 2.0

df["y"] = 1_000 * (
    df["intercept"]
    + df["trend"]
    + df["seasonality"]
    + 1.5 * df["event_1"]
    + 2.5 * df["event_2"]
    + beta_1 * df["x1_adstock_saturated"]
    + beta_2 * df["x2_adstock_saturated"]
    + df["epsilon"]
)

Is the 1_000 that begins the linear combination
df["y"] = 1_000 * (

supposed to instead be amplitude?
df["y"] = amplitude * (

Code later in the notebook seems to suggest it is, but I wasn't 100%.

Thanks for the feedback! I'll fix this within the next days 🙂


CVE Indicator -> CPE Software Relationship (cve-cpe) relationships failing

debug using
python3 -m unittest tests/test_6_0_cve_to_cpe.py

(also causing test 10 and 11 to fail)

The match criteriaid on the cve in  is not valid for that cve. The only match in the configuration for CVE-2023-43621 is 5B173A01-5175-444D-9651-68AD4E2C30C2 or 'cpe:2.3:a:schollz:croc:*:*:*:*:*:*:*:*'.
while the test file has these {'not_vulnerable': [{'criteria': 'cpe:2.3:a:vmware:vcenter_server:4.1:update_1:*:*:*:*:*:*', 'matchCriteriaId': '33905136-12C2-431A-A25C-01E94DAFC0FD'}], 'vulnerable': [{'criteria': 'cpe:2.3:a:vmware:vcenter_server:4.1:*:*:*:*:*:*:*', 'matchCriteriaId': 'A6EAF333-0047-4B38-8EA0-E0D751DF681F'}]}

shell $ curl https://services.nvd.nist.gov/rest/json/cves/2.0\?cveId\=CVE-2023-43621

{
  "resultsPerPage": 1,
  "startIndex": 0,
  "totalResults": 1,
  "format": "NVD_CVE",
  "version": "2.0",
  "timestamp": "2024-10-02T15:06:36.340",
  "vulnerabilities": [
    {
      "cve": {
        "id": "CVE-2023-43621",
        "sourceIdentifier"<EMAIL_ADDRESS>        "published": "2023-09-20T06:15:10.950",
        "lastModified": "2023-09-22T02:06:59.813",
        "vulnStatus": "Analyzed",
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "An issue was discovered in Croc through 9.6.5. The shared secret, located on a command line, can be read by local users who list all processes and their arguments."
          },
          {
            "lang": "es",
            "value": "Se descubrió un problema en Croc hasta la versión 9.6.5. El secreto compartido, ubicado en una línea de comando, puede ser leído por usuarios locales que enumeran todos los procesos y sus argumentos."
          }
        ],
        "metrics": {
          "cvssMetricV31": [
            {
              "source"<EMAIL_ADDRESS>              "type": "Primary",
              "cvssData": {
                "version": "3.1",
                "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N",
                "attackVector": "LOCAL",
                "attackComplexity": "HIGH",
                "privilegesRequired": "LOW",
                "userInteraction": "NONE",
                "scope": "UNCHANGED",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "NONE",
                "availabilityImpact": "NONE",
                "baseScore": 4.7,
                "baseSeverity": "MEDIUM"
              },
              "exploitabilityScore": 1,
              "impactScore": 3.6
            }
          ]
        },
        "weaknesses": [
          {
            "source"<EMAIL_ADDRESS>            "type": "Primary",
            "description": [
              {
                "lang": "en",
                "value": "NVD-CWE-noinfo"
              }
            ]
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "operator": "OR",
                "negate": false,
                "cpeMatch": [
                  {
                    "vulnerable": true,
                    "criteria": "cpe:2.3:a:schollz:croc:*:*:*:*:*:*:*:*",
                    "versionEndIncluding": "9.6.5",
                    "matchCriteriaId": "5B173A01-5175-444D-9651-68AD4E2C30C2"
                  }
                ]
              }
            ]
          }
        ],
        "references": [
          {
            "url": "http://www.openwall.com/lists/oss-security/2023/09/21/5",
            "source"<EMAIL_ADDRESS>            "tags": [
              "Mailing List"
            ]
          },
          {
            "url": "https://github.com/schollz/croc/issues/598",
            "source"<EMAIL_ADDRESS>            "tags": [
              "Exploit",
              "Issue Tracking",
              "Third Party Advisory"
            ]
          },
          {
            "url": "https://www.openwall.com/lists/oss-security/2023/09/08/2",
            "source"<EMAIL_ADDRESS>            "tags": [
              "Exploit",
              "Mailing List",
              "Third Party Advisory"
            ]
          }
        ]
      }
    }
  ]
}

Verdict: test is wrong

So I fixed test 6 for this
https://github.com/muchdogesec/arango_cti_processor/commit/2a0d8ee46c7dff384b1069be8faff970621ba0ec
but 6.1 and 6.2 fail, because I am faking the CVE data
what I realised is you are using the NVD API response to get matchcriteria ID for the CVE (which means my fake entries for these IDs won't be read).
Is there a reason you decided to use the NVD API response, vs the data in the STIX object for the matchCriteriaId.
For normalisation i'd prefer to use the STIX object as the source of truth here, unless there's a clear reason not to

Because it'll take forever, that's why... You'll have to make a request for every single match criteria and if there are hundreds, that's 100 request for a single CVE
Note: there's a rate limit too, it's just not worth it... This is one of the reasons cve2stix used to use hours.

Understood, I get it now. Thanks!
I guess we'll have to try manual tests for this over time to ensure it's working as expected when a CVE is updated with new CPEs.


chore(main): release 0.0.24

:robot: I have created a release beep boop
0.0.24 (2024-03-09)
Other

fix broken build link in README (#349) (4a2ae03)
upgrade to validator v0.0.36 (#359) (a6af2c7)
deps: update actions/upload-artifact digest to 5d5d22a (#329) (21f8a1d)
deps: update anchore/sbom-action action to v0.15.9 (#354) (31ce024)
deps: update azure/setup-helm action to v4 (#350) (a4d9a7c)
deps: update codecov/codecov-action digest to 0cfda1d (#345) (f2ecfcd)
deps: update codecov/codecov-action digest to 54bcd87 (#347) (1dfd348)
deps: update docker/setup-buildx-action digest to 0d103c3 (#348) (f30123d)
deps: update helm/kind-action action to v1.9.0 (#333) (023359e)
deps: update aws-sdk-go-v2 monorepo (#335) (89e5cd8)
deps: update aws-sdk-go-v2 monorepo (#340) (bb493ad)
deps: update aws-sdk-go-v2 monorepo (#341) (500d303)
deps: update aws-sdk-go-v2 monorepo (#342) (278b5f7)
deps: update aws-sdk-go-v2 monorepo (#343) (eee0f58)
deps: update aws-sdk-go-v2 monorepo (#346) (6a46655)
deps: update aws-sdk-go-v2 monorepo (#352) (e7f06e2)
deps: update golang.org/x/exp digest to 814bf88 (#344) (20a84cd)
deps: update golang.org/x/exp digest to ec58324 (#330) (f0c0196)
deps: update kubernetes packages to v0.29.2 (#336) (af629ff)
deps: update module github.com/aws/aws-sdk-go-v2/service/ec2 to v1.149.2 (#351) (aee3368)
deps: update module github.com/onsi/ginkgo/v2 to v2.16.0 (#353) (4b5a9d9)
deps: update module sigs.k8s.io/controller-runtime to v0.17.1 (#305) (e6e9a83)
deps: update module sigs.k8s.io/controller-runtime to v0.17.2 (#338) (47b872c)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/spectrocloud-labs/validator-plugin-aws/releases/tag/v0.0.24 :sunflower:


[17.12] Removed Archive Pages in Cloud, Store and Hub

Proposed changes
These pages are "live content" that should not live in the archive
images. Due to an error in the archiving process this was not done
correctly for docker-hub, docker-store and docker-cloud in the v17.12
archiving process.
ENGDOCS-21
Unreleased project version (optional)

Related issues (optional)

Deploy preview for docsdocker ready!
Built with commit 71381a048ef67850e832126523e2e054ef36d43c
https://deploy-preview-9268--docsdocker.netlify.com


[FEAT] Add a fireSet function to events

Describe your feature
Events would get a fireSet(players: { [Player]: true }, ...) function. It's common to construct a set of players over a list of players. This API will be convenient in those scenarios since you don't have to convert to a list.

Closed via #98. Thanks @sasial-dev!


Add more test cases, improve descriptions, use UMD

The tests will fail, but that's because the algorithm is broken


The script doesn't work when I try to set temperature in request body

I am trying to set the temperature of the response to 0.5 (instead of the default) by adding an additional line in the function:
body.temperature := 0.5 and it fails. The autocomplete will only output a space character. Is there a way to fix this?

@dino1729 Thanks for your report.
I think I isolated the cause of the bug. The method JSON.Dump from cJson converts 0.5 to "0.5" but OpenAI server expects a float number instead of a string. I opened an issue there (https://github.com/G33kDude/cJson.ahk/issues/6) and will wait a fix to add the temperature parameter in the code.

@dino1729 I've released a fix. You can change the temperature by changing the parameter MODEL_AUTOCOMPLETE_TEMP in L13


Webpack 4 compatibility cont.

replace this.options with this.query for webpack 4.0, still falls back to this.options.
also found an incompatibility with webpack hot module replacement trying to access window inside of the service worker.  Maybe we should make note of that in the readme? https://github.com/webpack/webpack/issues/6642
Also found deprecation warnings for Tapable but I'm not sure what dependency was causing it.
I apologize for the half-baked PR earlier
Edit: I think this will fix the peer dependency issues with David as well

Thanks! it's published now. Greenkeeper is also enabled now.


rename git-repo and git-revision options

suggestions so far include:

repo + revision
source-repo + source-revision

Keeping git in the name of the git flags is important for the day when we support some other source control system that is not git.


CI broken, likely due to GHA update to macos-11 runner image

The last successful CI run was Dec 15 2022. Then we attempted no CI runs for about two weeks, and runs are now failing on macos-11: https://github.com/pantsbuild/pex/actions/runs/3813840945/jobs/6487802924
The reason appears to be that the pyenv-installed 2.7.18 interpreter reports its sys.version_info as (2, 7, 16). Or at least, that is what PythonIdentity is seeing.
Notably, GitHub Actions released a new macos-11 image on Dec 16: https://github.com/actions/runner-images/releases/tag/macOS-11%2F20221215.1 (it is not clear to me what "image" means in the macos context).

Was able to set up SSH access to the runner ( - recommended) and, shockingly:
Mac-1672545118518:pex runner$ .pyenv_test/pyenv/versions/2.7.18/bin/python

WARNING: Python 2.7 is not recommended.
This version is included in macOS for compatibility with legacy software.
Future versions of macOS will not include Python 2.7.
Instead, it is recommended that you transition to using 'python3' from within Terminal.

Python 2.7.16 (default, Aug 29 2022, 10:34:32)
[GCC Apple LLVM 12.0.5 (clang-1<IP_ADDRESS>.6) [+internal-os, ptrauth-isa=deploy on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

I <3 macOS...

Indeed:
/usr/bin/python2.7
Mac-1672545118518:pex runner$ /usr/bin/python2.7

WARNING: Python 2.7 is not recommended.
This version is included in macOS for compatibility with legacy software.
Future versions of macOS will not include Python 2.7.
Instead, it is recommended that you transition to using 'python3' from within Terminal.

Python 2.7.16 (default, Aug 29 2022, 10:34:32)
[GCC Apple LLVM 12.0.5 (clang-1<IP_ADDRESS>.6) [+internal-os, ptrauth-isa=deploy on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Presumably this was 2.7.18 on the previous runner? But either way, pyenv should not get confused like this! Maybe this is due to the unorthodox way we call it in testing.py.

actions/setup-python is doing the right thing though:
Mac-1672545118518:pex runner$  /Users/runner/hostedtoolcache/Python/2.7.18/x64/bin/python
Python 2.7.18 (default, Oct 29 2020, 07:55:29)
[GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Can probably work around this by doing something similar to   _PEX_TEST_PYENV_VERSIONS and skipping installing 2.7 via pyenv. But I'd rather get to the bottom of this. If pyenv can point 2.7.18 to the system 2.7.16 then the world as we assume it to be is badly broken.

Can reproduce this outside of any test by manually replicating our pyenv steps:
Mac-1672548315571:pyenv runner$ ${PYENV_ROOT}/bin/pyenv install --keep 2.7.18
python-build: use<EMAIL_ADDRESS>from homebrew
python-build: use readline from homebrew
Downloading Python-2.7.18.tar.xz...
-> https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz
Installing Python-2.7.18...
patching file configure
patching file configure.ac
patching file setup.py
patching file Mac/Tools/pythonw.c
patching file setup.py
patching file Doc/library/ctypes.rst
patching file Lib/test/test_str.py
patching file Lib/test/test_unicode.py
patching file Modules/_ctypes/_ctypes.c
patching file Modules/_ctypes/callproc.c
patching file Modules/_ctypes/ctypes.h
patching file Modules/_ctypes/callproc.c
patching file setup.py
patching file Mac/Modules/qt/setup.py
patching file setup.py
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk

Installed Python-2.7.18 to /Users/runner/work/pex/pex/.pyenv_test/pyenv/versions/2.7.18
Mac-1672548315571:pyenv runner$
Mac-1672548315571:pyenv runner$ ls ${PYENV_ROOT}/versions
2.7.18
Mac-1672548315571:pyenv runner$ ls ${PYENV_ROOT}/versions/2.7.18
bin     include lib     share
Mac-1672548315571:pyenv runner$  ${PYENV_ROOT}/versions/2.7.18/bin/python

WARNING: Python 2.7 is not recommended.
This version is included in macOS for compatibility with legacy software.
Future versions of macOS will not include Python 2.7.
Instead, it is recommended that you transition to using 'python3' from within Terminal.

Python 2.7.16 (default, Aug 29 2022, 10:34:32)
[GCC Apple LLVM 12.0.5 (clang-1<IP_ADDRESS>.6) [+internal-os, ptrauth-isa=deploy on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

After playing around with pyenv on the box, looks like the GHA image update was a red herring. If I pin pyenv to an earlier release (v2.3.8) instead of HEAD, the problem doesn't occur. Confirming in a CI run now.

Confirmed. Fix in https://github.com/pantsbuild/pex/pull/2020.
Will try and repro locally and bisect it in the pyenv repo to see if I can give them a sensible bug report (or fix).
Yeesh...

Fixed in #2020

Reported to pyenv here: https://github.com/pyenv/pyenv/issues/2578


Created dutch translation

Wow! A huge thanks for your contribution @jaytaph! You are the first one! I'll go merge and add Dutch straight away.

@jaytaph what's the correct Dutch name for the Dutch language? Is it Nederlands or Vlaams?

It's "Nederlands" (nl_NL)..  Vlaams is Belgian version of Dutch (nl_BE)


[Example] Add missing model file

Add missing model file that are excluded from .gitignore by force
Self evaluation:

Build test: [X]Passed [ ]Failed [ ]Skipped
Run test: [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: Jihoon Lee<EMAIL_ADDRESS>

:memo: TAOS-CI Version: 1.4.20191203. Thank you for submitting PR #475. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://nnsuite.mooo.com/.

:octocat: cibot: @zhoonit, One of the module of prebuild group is failed. If you want to get a hint to fix this issue, please go to https://github.com/nnstreamer/nntrainer/wiki/.


add pod and node structures - [closed]

In GitLab by @tmon546596046 on May 10, 2018, 08:41
Merges updatek8s18 -> updatek8s18

In GitLab by @wknet123 on Nov 13, 2019, 10:52
closed


v1.1.1 build error.

/mnt/app/blockchain/eos/libraries/chain/webassembly/wavm.cpp:130:4:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)3; IR::ValueType ...Params = {(IR::ValueType)3}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:489:69:   required from ‘static void eosio::chain::wasm_injections::f32_unop_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 145]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f32_unop_injector<145>}]’
/mnt/app/blockchain/eos/libraries/chain/webassembly/wavm.cpp:130:4:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)1; IR::ValueType ...Params = {(IR::ValueType)4, (IR::ValueType)4}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:544:85:   required from ‘static void eosio::chain::wasm_injections::f64_relop_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 102]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f64_relop_injector<102>}]’
/mnt/app/blockchain/eos/libraries/chain/webassembly/wavm.cpp:130:4:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)1; IR::ValueType ...Params = {(IR::ValueType)3, (IR::ValueType)3}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:503:85:   required from ‘static void eosio::chain::wasm_injections::f32_relop_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 96]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f32_relop_injector<96>}]’
/mnt/app/blockchain/eos/libraries/chain/webassembly/wavm.cpp:130:4:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
In file included from /mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_interface_private.hpp:7:0,
from /mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:10:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)2; IR::ValueType ...Params = {(IR::ValueType)4}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:597:69:   required from ‘static void eosio::chain::wasm_injections::f64_trunc_i64_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 177]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f64_trunc_i64_injector<177>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for ( int i=0; i < module.exports.size(); i++ ) {
^~~~~~~~~~~~~~~~~~~~~
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)2; IR::ValueType ...Params = {(IR::ValueType)3}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:571:69:   required from ‘static void eosio::chain::wasm_injections::f32_trunc_i64_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 175]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f32_trunc_i64_injector<175>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)1; IR::ValueType ...Params = {(IR::ValueType)4}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:584:69:   required from ‘static void eosio::chain::wasm_injections::f64_trunc_i32_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 171]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f64_trunc_i32_injector<171>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)1; IR::ValueType ...Params = {(IR::ValueType)3}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:558:69:   required from ‘static void eosio::chain::wasm_injections::f32_trunc_i32_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 169]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f32_trunc_i32_injector<169>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)4; IR::ValueType ...Params = {(IR::ValueType)4, (IR::ValueType)4}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:516:85:   required from ‘static void eosio::chain::wasm_injections::f64_binop_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 166]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f64_binop_injector<166>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)4; IR::ValueType ...Params = {(IR::ValueType)4}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:530:69:   required from ‘static void eosio::chain::wasm_injections::f64_unop_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 159]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f64_unop_injector<159>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)3; IR::ValueType ...Params = {(IR::ValueType)3, (IR::ValueType)3}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:475:85:   required from ‘static void eosio::chain::wasm_injections::f32_binop_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 152]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f32_binop_injector<152>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)3; IR::ValueType ...Params = {(IR::ValueType)3}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:489:69:   required from ‘static void eosio::chain::wasm_injections::f32_unop_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 145]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f32_unop_injector<145>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)1; IR::ValueType ...Params = {(IR::ValueType)4, (IR::ValueType)4}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:544:85:   required from ‘static void eosio::chain::wasm_injections::f64_relop_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 102]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f64_relop_injector<102>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp: In instantiation of ‘static void eosio::chain::wasm_injections::injector_utils::add_import(IR::Module&, const char*, int32_t&) [with IR::ResultType Result = (IR::ResultType)1; IR::ValueType ...Params = {(IR::ValueType)3, (IR::ValueType)3}; int32_t = int]’:
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:503:85:   required from ‘static void eosio::chain::wasm_injections::f32_relop_injector::accept(eosio::chain::wasm_ops::instr*, eosio::chain::wasm_ops::visitor_arg&) [with short unsigned int Opcode = 96]’
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp:566:7:   required from ‘void eosio::chain::wasm_ops::instr_base::visit(eosio::chain::wasm_ops::visitor_arg&&) [with Mutators = {eosio::chain::wasm_injections::f32_relop_injector<96>}]’
/mnt/app/blockchain/eos/libraries/chain/wasm_interface.cpp:1921:3:   required from here
/mnt/app/blockchain/eos/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp:81:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
make[1]: *** [CMakeFiles/Makefile2:1873: libraries/chain/CMakeFiles/eosio_chain.dir/all] Error 2
make: *** [Makefile:163: all] Error 2
>>>>>>>>>>>>>>>>>>>> MAKE building EOSIO has exited with the above error.

I have deleted the source code again,run eos_build.sh,still have this problem,CentOS 7.4

I get a similar error, also v1.1.1, and with 4 CPUs and 16Gb RAM:
`
/root/opt/boost/include/boost/test/tools/old/impl.hpp: In instantiation of âboost::test_tools::assertion_result boost::test_tools::tt_detail::equal_impl(const Left&, const Right&) [with Left = long unsigned int; Right = int]â:
/root/opt/boost/include/boost/test/tools/old/impl.hpp:130:26:   required from âboost::test_tools::assertion_result boost::test_tools::tt_detail::equal_impl_frwd::call_impl(const Left&, const Right&, mpl_::false_) const [with Left = long unsigned int; Right = int; mpl_::false_ = mpl_::bool_]â
/root/opt/boost/include/boost/test/tools/old/impl.hpp:145:56:   required from âboost::test_tools::assertion_result boost::test_tools::tt_detail::equal_impl_frwd::operator()(const Left&, const Right&) const [with Left = long unsigned int; Right = int]â
/root/opt/boost/include/boost/test/tools/old/impl.hpp:92:1:   required from âbool boost::test_tools::tt_detail::check_frwd(Pred, const boost::unit_test::lazy_ostream&, boost::unit_test::const_string, std::size_t, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, const Arg0&, const char*, const Arg1&, const char*) [with Pred = boost::test_tools::tt_detail::equal_impl_frwd; Arg0 = long unsigned int; Arg1 = int; boost::unit_test::const_string = boost::unit_test::basic_cstring; std::size_t = long unsigned int]â
/root/eos/unittests/wasm_tests.cpp:101:7:   required from here
/root/opt/boost/include/boost/test/tools/old/impl.hpp:107:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
return left == right;
~^~~~
[ 98%] Building CXX object programs/cleos/CMakeFiles/cleos.dir/help_text.cpp.o
[ 98%] Linking CXX executable cleos
[ 98%] Built target cleos
[ 98%] Linking CXX executable unit_test
[ 98%] Built target unit_test
make: *** [Makefile:163: all] Error 2
    >>>>>>>>>>>>>>>>>>>> MAKE building EOSIO has exited with the above error.

`

Neither pasted snippet contains the actual error that caused the builds to fail.  Compiling Boost unfortunately produces many (presumably) benign warnings about signed/unsigned mismatches which conceal the real error.  Please find an actual compiler error in your build logs and paste that.

Ok I think I got the root error this time:
In file included from /root/opt/boost/include/boost/test/test_tools.hpp:46:0,
                 from /root/opt/boost/include/boost/test/unit_test.hpp:18,
                 from /root/eos/tests/wallet_tests.cpp:11:
/root/opt/boost/include/boost/test/tools/old/impl.hpp: In instantiation of âboost::test_tools::assertion_result boost::test_tools::tt_detail::equal_impl(const Left&, const Right&) [with Left = int; Right = long unsigned int]â:
/root/opt/boost/include/boost/test/tools/old/impl.hpp:130:26:   required from âboost::test_tools::assertion_result boost::test_tools::tt_detail::equal_impl_frwd::call_impl(const Left&, const Right&, mpl_::false_) const [with Left = int; Right = long unsigned int; mpl_::false_ = mpl_::bool_<false>]â
/root/opt/boost/include/boost/test/tools/old/impl.hpp:145:56:   required from âboost::test_tools::assertion_result boost::test_tools::tt_detail::equal_impl_frwd::operator()(const Left&, const Right&) const [with Left = int; Right = long unsigned int]â
/root/opt/boost/include/boost/test/tools/old/impl.hpp:92:1:   required from âbool boost::test_tools::tt_detail::check_frwd(Pred, const boost::unit_test::lazy_ostream&, boost::unit_test::const_string, std::size_t, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, const Arg0&, const char*, const Arg1&, const char*) [with Pred = boost::test_tools::tt_detail::equal_impl_frwd; Arg0 = int; Arg1 = long unsigned int; boost::unit_test::const_string = boost::unit_test::basic_cstring<const char>; std::size_t = long unsigned int]â
/root/eos/tests/wallet_tests.cpp:38:4:   required from here
/root/opt/boost/include/boost/test/tools/old/impl.hpp:107:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     return left == right;
            ~~~~~^~~~~~~~
/root/eos/plugins/mongo_db_plugin/mongo_db_plugin.cpp: In member function âvoid eosio::mongo_db_plugin_impl::_process_accepted_transaction(const transaction_metadata_ptr&)â:
/root/eos/plugins/mongo_db_plugin/mongo_db_plugin.cpp:759:31: error: âclass mongocxx::v_noabi::bulk_writeâ has no member named âexecuteâ
             if( !bulk_actions.execute() ) {
                               ^~~~~~~
/root/eos/plugins/mongo_db_plugin/mongo_db_plugin.cpp: In member function âvoid eosio::mongo_db_plugin_impl::_process_irreversible_block(const block_state_ptr&)â:
/root/eos/plugins/mongo_db_plugin/mongo_db_plugin.cpp:960:20: error: âclass mongocxx::v_noabi::bulk_writeâ has no member named âexecuteâ
          if( !bulk.execute()) {
                    ^~~~~~~
/root/eos/plugins/net_plugin/net_plugin.cpp: In member function âvoid eosio::connection::blk_send_branch()â:
/root/eos/plugins/net_plugin/net_plugin.cpp:869:16: warning: variable âlib_numâ set but not used [-Wunused-but-set-variable]
       uint32_t lib_num;
                ^~~~~~~
make[2]: *** [plugins/mongo_db_plugin/CMakeFiles/mongo_db_plugin.dir/build.make:63: plugins/mongo_db_plugin/CMakeFiles/mongo_db_plugin.dir/mongo_db_plugin.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:6020: plugins/mongo_db_plugin/CMakeFiles/mongo_db_plugin.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:163: all] Error 2

I'm getting the following error:
   File or directory /usr/local/include/libmongoc-1.0 referenced by variable MONGOC_INCLUDE_DIRS does not exist!

So basically the build script is skipping mongoDB C driver installation

Maybe check https://github.com/EOSIO/eos/issues/4714
solution: docker pull eosio/builder:latest

Thanks, I saw that but I'm not using docker, this is straight from a source build.

I failed to compile for the first time, and then I did not delete the build folder. The second compile succeeded.I don't know why the compilation was successful.

Still the same after another build and without deleting the build folder (I'm using the build script BTW).

@Ampakinetic   Upload the compilation log so that the problem can be described more clearly

Any further ideas on what I can try to resolve this please?

The mongocxx version found at /usr/local/lib64/libmongocxx-static.a is not the required version.  The build script attempts to download and build the required version automatically.  It examines your installed version first.  There appears to be a bug in that code.  Assuming you're in Ubuntu, edit eos/scripts/eosio_build_ubuntu.sh and change line 292 from if [ "${maj}" -gt 3 ]; then to if [ "${maj}" -lt 3 ]; then.  Then run eosio_build.sh again.  If it starts compiling libmongocxx for you, we'll know, and that apparent defect will need to be fixed.

Thank you very much!  I was using Centos 7, so I edited the centos script instead.  The first time I ran it, I made the change as you'd suggested, but that didn't seem to make a difference.  Then I commented out the conditional statements to make sure the driver was going to be installed no matter what.  This fixed the build error and now I'm up and running and syncing properly :)


Is the package name missing when pip-compiling a VCS url requirement?

A requirement of the form package @ git+https://... is converted by pip-compile to git+https://....
Running pip install -e . with such a line inside requirements.txt works with pip 20.0.2, but not with pip 20.1.1 anymore. It  does however work after manually prefixing the VCS URL with the package identifier again.
I am only beginning to grasp the complexities of Python package management, and I am not sure whether this is an issue with pip, pip-tools, or anything in between. Having said that, I noticed
that in https://www.python.org/dev/peps/pep-0440/#direct-references, all examples are of the form package name @ VCS URL, so perhaps it has to be included in pip-compile's output?
I'd appreciate any hint on how best to proceed with this. Thanks!
Environment Versions

Mac OS X 10.15.5
Python version: Python 3.7.7
pip version:  20.1.1
pip-tools version: 5.2.1

Steps to replicate

Create the following files. This is already prepared in the repo https://github.com/andreaswachowski/pip-problem/, so you can just clone it.

1.1. requirements.in:
colormath @ git+https://github.com/gtaylor/python-colormath.git@6cb12bf#egg=colormath@https://github.com/gtaylor/python-colormath/tarball/6cb12bf

1.2. setup.py:
import pip
from pip._internal.network.session import PipSession
from pip._internal.req import parse_requirements
from setuptools import find_packages, setup

install_requires_g = parse_requirements("requirements.txt", session=PipSession())

if tuple(map(int, pip.__version__.split("."))) >= (20, 1):
    install_requires = [str(ir.requirement) for ir in install_requires_g]
else:
    install_requires = [str(ir.req) for ir in install_requires_g]

setup(
    name="pkg",
    install_requires=install_requires,
    version="0.1.0",
    packages=find_packages(),
)

1.3. An empty pkg/__init__.py file.

Execute the following steps:

python3 -m venv venv
source venv/bin/activate
pip install pip==20.1.1
pip install pip-tools==5.2.1
pip-compile requirements.in > requirements.txt
pip install -e .

Expected result
pip install -e . executes without error.
Actual result
pip install -e . returns an error:
    error in pkg setup command: 'install_requires' must be a string or list of
    strings containing valid project/version requirement specifiers; Invalid
    requirement, parse error at "'+https:/'"
    ----------------------------------------

(Edit: Make error description self-reliant, without depending on an external repository.)

Hello @andreaswachowski
Thanks for the issue! Currently pip-tools doesn't support <name> @ <vcs_url> format properly, see https://github.com/jazzband/pip-tools/issues/1056#issuecomment-595192164. It would be nice to implement it.

@andreaswachowski @askurihin @andreymz
Can you please confirm that this is (would be) fixed by #1329 ?

I confirm that it is fixed by #1329!
Thank you, I can (soon) remove my setup.py hack to fix this problem.

This seems to be working in the latest release for me
Package       Version Editable project location
------------- ------- ---------------------------
click         8.0.3
colormath     3.0.0
networkx      2.6.3
numpy         1.22.2
pep517        0.12.0
pip           22.0.3
pip-tools     6.5.1
pkg           0.1.0   /home/andy/Code/pip-problem
pkg_resources 0.0.0
setuptools    44.1.1
tomli         2.0.1
wheel         0.37.1


Adding a ClusterRole and ClusterRoleBinding to give cluster-wide read of ClusterDeployments

Summary of Changes
Some of our tools work with bare ClusterDeployments without using the ManagedCluster or ManagedClusterSet APIs - so they need to be able to read ClusterDeployments at the ClusterScope. This new role and binding provide such access.
Future Enhancements
This CRB uses a subjects array that we'll use a lot - we should stop duplicating it.  A future PR should make this CRB a template and use kustomize to update the roelRef only!

/lgtm


Disclose Security Isssue

Hi @jasonjoh,
we did implement last month the exchange token validation but me and my colleague got concern about the safety of the proposed procedure.  https://docs.microsoft.com/en-us/outlook/add-ins/validate-an-identity-token.
It's seems that the validation that is propose, may allow attacker to impersonate an user. Is there any mail address to express security issues ?

Sorry for the delay on this! Can you explain your concern here?


[ZEPPELIN-935] Adding more configurations to livy interpreter

What is this PR for?
Extending the livy interpreter to allow manipulation in the configurations of Spark from zeppelin web ui.
What type of PR is it?
Improvement
Todos

[Test case ] - Task
[Documentation ] - Task

What is the Jira issue?

[ZEPPELIN-935]

How should this be tested?

Run livy server in yarn mode or local mode
Start the Zeppelin and go to interpreter page, create livy interpreter with supported configurations

Screenshots (if appropriate)

Questions:

Does the licenses files need update? no
Is there breaking changes for older versions? no
Does this needs documentation? yes

@mfelgamal thank you for the contribution, have tested this with both https://github.com/cloudera/livy and https://github.com/cloudera/hue/tree/master/apps/spark/java.
LGTM.

Thanks @mfelgamal for the contribution.
LGTM

@mfelgamal could you please close the PR #903?

Except for the doc thing, rest is all good.

@prabhjyotsingh Thanks for your review, modified doc in the recent commit.

LGTM

Merging this if no more discussion.


remove eastus out of acs preview regions

This checklist is used to make sure that common guidelines for a pull request are followed.
General Guidelines

[x] The PR has modified HISTORY.rst with an appropriate description of the change (see Modifying change log).

Command Guidelines

[x] Each command and parameter has a meaningful description.
[x] Each new command has a test.

(see Authoring Command Modules)

@rjtsdl,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

Fix #4222

@derekbekoe, please help to merge, when it is green. :)

Codecov Report

Merging #4227 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master    #4227   +/-   ##
=======================================
  Coverage   70.04%   70.04%
=======================================
  Files         475      475
  Lines       29602    29602
  Branches     4539     4539
=======================================
  Hits        20736    20736
  Misses       7422     7422
  Partials     1444     1444

Impacted Files
Coverage Δ

...e-cli-acs/azure/cli/command_modules/acs/_params.py
76.71% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

@rjtsdl We just released so please resync with master and update the PR.
Currently HISTORY.rst looks incorrect.


Fix bugs in Using_Muldoon.ipynb

7:30am-8:30am

fixed deprecated functions in Utils.py and met_timeseries.py
Updated Using_Muldoon jupyter page with new demos.


added armstrong-number.py in algorithms/maths/armstrong-number to che…

Added new file armstrong-number.py in path Algorithms/Maths/Armstron-number
Which is useful to check the given number is Armstrong or not ?.
Armstrong number is a number that is equal to the sum of cubes of its digits. For example 0, 1, 153, 370, 371 and 407 are the Armstrong numbers.

@divyhshah : Thanks for Contributing.
Please add the issue number in your description.
Feel free to use our contribution guidelines (https://github.com/fnplus/interview-techdev-guide/blob/master/CONTRIBUTING.md#how-to-contribute-an-implementation-code) for reference

There are conflicts wih you PR. Could you resolve them and let us know. We'l review the PR again.
Thanks

Thanks for contributing!


Node JS service is restarting with dumping some Emitted 'error' event on Vhost instance at error.

Hi We are using rascal with our nodeJS app. It is working fine from last 1 month, but all of a sudden node app is crashing with below error dumped in logs and not catching the issue any where although all places(connection creation, msg publishing and msg subscribe) is guarded with catch blocks.
Although i saw that one message was published successfully before service restarted.
errormessage:
2020-10-23T18:57:04.583553319Z events.js:288
2020-10-23T18:57:04.583587269Z       throw er; // Unhandled 'error' event
2020-10-23T18:57:04.583596694Z       ^
2020-10-23T18:57:04.583603817Z
2020-10-23T18:57:04.583612233Z Error: read ECONNRESET
2020-10-23T18:57:04.583619655Z     at TLSWrap.onStreamRead (internal/stream_base_commons.js:205:27)
2020-10-23T18:57:04.583627246Z Emitted 'error' event on Vhost instance at:
2020-10-23T18:57:04.583633477Z     at handleConnectionError (/usr/src/app/node_modules/rascal/lib/amqp/Vhost.js:364:10)
2020-10-23T18:57:04.583640901Z     at CallbackModel.<anonymous> (/usr/src/app/node_modules/lodash/lodash.js:10076:25)
2020-10-23T18:57:04.583647851Z     at Object.onceWrapper (events.js:418:26)
2020-10-23T18:57:04.583654856Z     at CallbackModel.emit (events.js:311:20)
2020-10-23T18:57:04.583661298Z     at CallbackModel.EventEmitter.emit (domain.js:482:12)
2020-10-23T18:57:04.583669758Z     at Connection.emit (events.js:311:20)
2020-10-23T18:57:04.583676217Z     at Connection.EventEmitter.emit (domain.js:482:12)
2020-10-23T18:57:04.583684842Z     at Connection.C.onSocketError (/usr/src/app/node_modules/amqplib/lib/connection.js:353:10)
2020-10-23T18:57:04.583693334Z     at TLSSocket.emit (events.js:323:22)
2020-10-23T18:57:04.583701378Z     at TLSSocket.EventEmitter.emit (domain.js:482:12)
2020-10-23T18:57:04.583708081Z     at emitErrorNT (internal/streams/destroy.js:92:8)
2020-10-23T18:57:04.583715372Z     at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
2020-10-23T18:57:04.583722416Z     at processTicksAndRejections (internal/process/task_queues.js:84:21) {
2020-10-23T18:57:04.583730876Z   errno: 'ECONNRESET',
2020-10-23T18:57:04.583738292Z   code: 'ECONNRESET',
2020-10-23T18:57:04.583745597Z   syscall: 'read'
2020-10-23T18:57:04.583753156Z }

PS: My connection configuration is
"connection": {                 "heartbeat": 5,                 "socketOptions": {                     "timeout": 20000                 },                 "slashes": true             }

Hi @mayankmike86,
Try/Catch blocks are insufficient. You need to register error listeners. See the very important section about event handling

Thanks @cressie176 I missed the error listeners on broker creation, added it now.


microsoft.insights/diagnosticSettings

Describe the noise
Applying diagnostic setting on the subscription get noise re 'location'
Resource type (i.e. Microsoft.Storage/storageAccounts)
microsoft.insights/diagnosticSettings
apiVersion (i.e. 2019-04-01)
2017-05-01-preview
Client (PowerShell, Azure CLI, or API)
Azure CLI
Relevant ARM Template code (we only need the resource object for the above resourceType and apiVersion, but if it's easier you can include the entire template
targetScope = 'subscription'
param workspaceId string
resource diagnostics 'microsoft.insights/diagnosticSettings@2017-05-01-preview' = {
name: 'Diagnostics'
properties: {
workspaceId: workspaceId
logs: [
{
category: 'Administrative'
enabled: true
}
{
category: 'Security'
enabled: true
}
{
category: 'ServiceHealth'
enabled: true
}
{
category: 'Alert'
enabled: true
}
{
category: 'Recommendation'
enabled: true
}
{
category: 'Policy'
enabled: true
}
{
category: 'Autoscale'
enabled: true
}
{
category: 'ResourceHealth'
enabled: true
}
]
}
}
Expected response (i.e. "I expected no noise since the template has not been modified since the resources were deployed)
Rerunning the template give the noise that 'location' will be removed but this is not a parameter supported by the API
Current (noisy) response (either include a screenshot of the what-if output, or copy/paste the text)
~ microsoft.insights/diagnosticSettings/Diagnostics [2017-05-01-preview]
- location: "global"
Additional context
Add any other context about the problem here.

The location property is read-only. I'll tag it in our metadata.


Supress typing warnings

Since some function files has only type hints, why not use stub .pyi for that files?
This could lead to 2 improvements:

Differentiate files with code from that only with annotations
Suppress warnings when writing the type hints

BTW: Thank you for making this project.

@Diogo-Rossi Would you like to work on this?

@Diogo-Rossi Would you like to work on this?

@haiiliin Sure, I will try to.


HMR does not work when history fallback is involed

Describe the bug
HMR does not work when history fallback is involed
Reproduction
https://github.com/csr632/test-vite/tree/reproduce-hmr-issue

Go to http://localhost:3000/asd/123/3423 or anything that trigger history fallback.
Edit the App.jsx file
You can see the App does not update to reflect the change.

If you do the same thing at http://localhost:3000, HMR works fine.
System Info

required vite version: 0.17.0
required Operating System: MacOS
required Node version: 12.16.2

After some debugging, I found that it is the HTML that is causing the difference:
With history fallback(not working):

Normal(working):


Unable to launch extension

hey i installed the extension through the marketplace and want to launch it .. but the wheel keeps spinning

any idee how to find out what is not working ?
docker desktop version 4.17.1

Hi @andrebiegel
I did a new install using 4.17 (need to update to the latest), and looks like everything is fine. Usually, the first time it takes some time to start as it is downloading the containers required to run.
Does it get stuck for more than 10 minutes?

yes .. also tested the extension on an complety fresh install of docker desktop 4.19, is there some kind of log where i can see what is going on ?

@andrebiegel  yes, you can enable the debug traces in the extension or you can also change the settings to show the containers running the extension
Test and debug: https://docs.docker.com/desktop/extensions-sdk/dev/test-debug/
Show containers: https://docs.docker.com/desktop/extensions-sdk/dev/test-debug/#show-the-extension-containers

mongostatus So {exists: true, isRunning: true, mappedPort: 0}exists: trueisRunning: truemappedPort: 0[[Prototype]]: Object App.tsx:285 postmanstatus So {exists: true, isRunning: true, mappedPort: 0}exists: trueisRunning: truemappedPort: 0[[Prototype]]: Object App.tsx:312 appstatus So {exists: false, isRunning: false, mappedPort: 0} App.tsx:355 Creating  microcks App.tsx:658 [microcks] docker: Invalid hostPort: NaN. App.tsx:658 [microcks] See 'docker run --help'. App.tsx:666 [microcks] onClose with exit code 125
Thats the logs in the chrome dev console ..

Hi @andrebiegel,
I agree that a warning message would be nice on that specific bootstrap issue. Don't know if you see it but you have the ability to change the used ports within the settings pane in case you're facing conflicts.
Let us know if that solves your issue.
Thanks 🙏

I was able to reproduce the issue. I will work on a patch to handle this issue.

Not sure I m hitting the same issue, but it results in same behavior that extension startup just keep spinning.
In my case, I already added an offset on the ports in settings before to try to run the extension.
Configured the debuger, here are the relevant errors I got:
Creating  microcks
[microcks-postman] 27dafcff537c3d7c91b2b67b9ca1cda12b7b3629d7d139050178e21a4913dc56
[microcks-mongodb] acb9708d1c5102df2c28012db4f0785249ba40959e1c3a653efce162259cbf47
[microcks] 49b6b55662e00a16532674351319344b3cb36fdc45db7cc0cd497c4f2a285b37
[microcks-postman] docker: Error response from daemon: network microcks-extension-network not found.
[microcks-mongodb] docker: Error response from daemon: network microcks-extension-network not found.
[microcks-postman] onClose with exit code 125
[microcks-mongodb] onClose with exit code 125
[microcks] docker: Error response from daemon: network microcks-extension-network not found.
[microcks] onClose with exit code 125


[Feature] support  paimon jdbc catalog

See iceberg. Custom catalogs are supported. For example, users can customize catalogs based on jdbc. Table metadata can be stored in a relational database, independent of hive meta.
https://iceberg.apache.org/docs/latest/jdbc/

See iceberg. Custom catalogs are supported. For example, users can customize catalogs based on jdbc. Table metadata can be stored in a relational database, independent of hive meta.
https://iceberg.apache.org/docs/latest/jdbc/

Hi @melin thanks for reporting, is this requirement comes from your company production env?

Yes, metadata storage does not depend on hms. can customize the metadata storage mode, which is suitable for more scenarios, such as cloud deployment.

Can you implement this feature, if no one has done it yet, I am very interested in this, I can try to complete it

Are you going to implement this feature, if no one has done it yet, I am very interested in this, I can try to complete it

Are you going to implement this feature? If no one has done it yet, I am very interested in this, I can try to complete it

I think we also need jdbc catalog or user-defined catalog. We currently rely on hms, but we have the idea of breaking away from hive

It is currently implemented based on iceberg. iceberg catalog provides a fileio interface for more customized acceleration.
hms is the metadata storage system of hadoop data warehouse, which is no longer satisfied with the data lake metadata storage system.
iceberg rest catalog is a more scalable approach, leaving the implementation to the user

It is currently implemented based on iceberg. iceberg catalog provides a fileio interface for more customized acceleration. hms is the metadata storage system of hadoop data warehouse, which is no longer satisfied with the data lake metadata storage system. iceberg rest catalog is a more scalable approach, leaving the implementation to the user

Yes, if it is on the cloud, I think hive may not be very necessary, so we need to give users more choices

Hi, what's the progress?

+1 for custom catalog

Object storage cannot guarantee the atomic rename。
hive metastore rely on hms and mysql , it may become a bottleneck
business requirements: one tenant may have many sub account , hope to achieve resource isolation by catalog


Update Service Mappings

We source this csv for information during our releases. This PR is an example of the resulting update to docs.ms.
This PR updates our service mapping such that the above PR is possible without manual intervention.
I know I may be missing a few and please call those out, but I want to close this PR (at least this version!) quickly. I'll address any callouts immediately after merging though :)
@Azure/azure-sdk-eng

Another question I have is should this go into the allpackages csv files or the new csv files? The new csv files also include things like the RepoPath so if you ever need to map or find the source location perhaps putting this information into the new csv file instead.

@weshaggard what is the difference between the "new" packages and the "allpackages".