Locales?

will there be any locales avaliable?

Yes.
But I am looking for a simple implementation, not to expand our library.
e.g.
import dayjs from 'dayjs'

dayjs.setWeekName(['dimanche', 'lundi', 'mardi', ...]) // French

dayjs.format()// then return locales

How do you think?

sorry, i don't speak ES5/6 😅
maybe stick to a moment.js approach for now?

😅 ok, here is the compiled one in browser
<script src="https://unpkg.com/dayjs"></script>
<script>
// French locales
dayjs.setWeekName(['dimanche', 'lundi', 'mardi', ...])
// return locales [dimanche]
dayjs().format('[dddd]')
</script>

hmm, alright
how about "from now","ago" localisations?

This is much like moment().fromNow() API dose.
But do we really need an API like this?
I mean perhaps some one want to return a string "4 years", another one want "4 years ago", and another one want something else(number 4 maybe). And maybe it's hard to satisfied them all.
How do you think?

How about going for something like this for handling language overrides? I think it looks pretty sweet.
// Only override weekdays and months
import { weekdays, months } from 'dayjs/locale/fr'
dayjs.setLocale({ weekdays, months })

Alternatively, for including an entire language file
// Override entire language
import * as locale from 'dayjs/locale/fr'
dayjs.setLocale(locale)

I just came here from hn. I already had proposal for date-fns to use Intl.DateTimeFormat for most case, so only can suggest same here. :) Good job so far.
https://github.com/date-fns/date-fns/issues/464

I like b44rd approach. Just pass an object of key-value strings and let dayjs initialize with it, by overriding the default strings with the provided ones.

I'll start working on a PR for the approach outlined by @b44rd , unless someone has an objection.

I think a big mistake moment did is making the configured locale global.
This is a big issue for Node.js server side where many requests might be processed at the same time.
Having a API returning a new dayjs instance with the localization would be better:
import dayjs from 'dayjs';
import withLocale from 'dayjs/locale';
import frenchConf from 'dayjs/locale/fr-FR';

const dayjsFR = withLocale(dayjs, { weekdays: ['Dimanche', 'Lundi', ...etc] });
const dayjsFR2 = withLocale(dayjs, frenchConf);

@SBoudrias you could store different instances per language with this approach #77
const dayjsFR = dayjs(null, { WD: ['Dimanche', 'Lundi', ...etc] });

Pinging @schiem :smiley:

That looks good to me!  That's really similar to the approach I was thinking of.
I think if we add localization, we'll need to rethink how abbreviated months are done, since it currently just takes the first the first three letters of the month, which isn't in line with how other languages handle the abbreviation.  My guess is that the only fully localized way to handle that will be with a separate array of abbreviations.
Apart from that consideration, the only other thing I can think of is adding a few more tests to make sure that the language specific set/get are working (tests for calling dayjs(...).set('minuto', 10)).

I don't think how months are being abbreviated is a problem. I'm pretty sure the first three letters convention is world-wide accepted. I'd be worried about pluralization instead.
In the future, for newer formats, we may need some "internationalized" helper for pluralization. Since, for instance, the singular for months is month (without last s), but in spanish, meses (which means months) is just mes (without last es).

Apart from that consideration, the only other thing I can think of is adding a few more tests to make sure that the language specific set/get are working (tests for calling dayjs(...).set('minuto', 10)).

In regards to that, we must discuss if set is using the localized word or not. If you ask me, I vote to keep it in english, so the whole source code still operates using the english conventions.
So you internationalize your dayjs instances, but still writing code like dayjs(...).set('minutes', 10) (it also helps to follow documentation examples)

@Frondor Looks Nice.
I just wondering if it's better returning a new function instead of a new instance.
import dayjs from 'dayjs'
import localeES from 'dayjs/locales/es'

const spanishDayjs = dayjs.locale(localeES)
// then just use spanishDayjs later

spanishDayjs().set(...).format(...)

Unless I'm reading the PR incorrectly (I may be, correct me if I am), the changes at index.js:137-156 will change the set function to require the localized language to be used (the switch statement will go from case 'minute': to case 'minuto':, since the constant this.$C.MIN is being changed with the localization).
Would a pluralizer function that can be overridden in the localization work?  So for English the default function would return the input string + 's', but for other languages you could handle the edge cases directly in the function with if tests.  The trade off would be that the library would stay super small since the English function could just be one line, but the pluralizer function might be unwieldy in other languages.

@Frondor Another idea here. We might better give our user a choice whether to set local in current line of code, a new instance, or set global.
A pseudo code here:
let local = 'Monday'
class Dayjs {
  constructor(config, local) {
    this.local = null
    if (local) this.local = local
  }

  setGlobalLocal(l) {
    local = l
  }

  format() {
    return this.local || local
  }
}
const dayjs = (config, local) => (new Dayjs(config, local))

dayjs.newLocalDayjs = (local) => (config) => (new Dayjs(config, local))

export default dayjs

And usage:
// 1
dayjs() // normal dayjs
// 2
dayjs(20180808, 'spanishDay') // set local in this line only
dayjs() // still normal dayjs
// 3
dayjs.setGlobalLocal('spanishDay') // dayjs turns to spanish
dayjs() // spanish dayjs
// 4
const FrenchDayjs = dayjs.newLocalDayjs('FrenchDay') // get a new FrenchDayjs function
FrenchDayjs() // french dayjs
dayjs() // still normal dayjs

@schiem @SBoudrias opinions?

I don't think we should encourage users to set different locales per instance. Remember every time you provide locales you're doing Object.assign computations.
Anyway, can you think of a real world example where someone needs to provide formatted dates for different languages from the same instance, probably in the same page? If so, and it turns to be useful, then I suggest a second parameter in dayjs(...).add(...).format('...', overrides).
At this moment (in my PR), the whole cycle lets you add / switch / override locales three times: dayjs(20180808, frFR).setLocale(enGB).format('...', esES)
I know it's out of the scope of this issue, but I'll show an "advanced" use case for this lib; we've building a lightweight ORM and my goal is to provide date casting with dayjs. I can share an example of how it works with localization.
But for this to work, I want to suggest a change on the way how dayjs actually instantiates itself. So a default format can be provided for JSON.stringify(dayjsObject) to use through (the missing) dayjs.toJSON method.
You may ask why not dayjs().defaultFormat('...')?, well... In my humble opinion, I consider the method chain is actually pretty long and with many configurations incoming (as the project grows), you'll see your how code ends up looking better as dayjs(initConfig) instead of dayjs().setXconfig().setYconfig().setZconfig().... But once again, it's my opinion, and the use case I'm showing as example is just to help me explain my point.
We can easily solve that by doing something like this:

The class is exported for the user to manually instantiate; let's say import dayjs from 'dayjs' imports an instance, and import { Dayjs } from 'dayjs' imports the class.

import { Dayjs }, dayjs from 'dayjs'

const FrenchDayjs= Dayjs({ format: 'YYYY', locale: frFR, date: nullValue || new Date() })
// or
const date = dayjs(new Date())

console.log(JSON.stringify(Dayjs)) // prints "2018" because it internally uses obj.toJSON() which uses default format provided

You can see how this kind of use case benefits from the new config here (note the MockDayjs object):
https://codepen.io/Frondor/pen/BxpLZG?editors=0012
(It's tedious, but easy to follow the way how I use dayjs to provide date casting)
const car = new Car({ created_at: new Date(2018, 4, 28) }) // car.created_at === Dayjs object
car.created_at.format('YYYY') // outputs "2018"
JSON.stringify(car) // Object: { created_at: "Saturday of 2018" }

Still, I'm afraid I didn't get what you mean. Sorry. May be I have to go through your code and comment again tomorrow.
Questions,

1 why we are going to change dayjs#toJSON  ?
2 what's this ORM here stand for? (Confused me most)

Plus, any direct opinion or suggestion to my pseudo code above? Looking for a feed back. :D
Good job so far. I think we are close to the FINAL locales we are looking for.

Plus, any direct opinion or suggestion to my pseudo code above? Looking for a feed back. :D

Looks similar to my approach, but the newLocalDayjs approach adds a bit of unnecessary complexity in my humble opinion. Also, if you pass a string to dayjs(20180808, 'spanishDay') , that means you'll be requiring locale objects dynamically, and the UMD version is going to ship with every locale we support, that's going to increase the size a lot and even moment.js doesn't do that. Or probably you meant an object and not a string? Anyway, that's why I suggest to simply
export const class Dayjs { constructor (config) {...} }
export default const dayjs = (date, config) => new Dayjs(config) } // config.date = date

and let the user handle the instance however he wants (see my MockDayjs example)

and the UMD version is going to ship with every locale we support

My mistake. It's an imported object not a string. I've corrected the code above.

The class is exported for the user to manually

Export Dayjs class is a good idea. Cause this ships more flexibility.

I agree with both ideas. At the moment, we don't have dayjs.local but dayjs.setLocale and dayjs.format(..., { locale: FR }). It's a matter of taste I think, I don't really mind on which term to use for this method.
You can also do dayjs(new Date(), { locale: FR })

or just one api for less confusion. In this way, a locale is also a kind of plugin:

Now that I think, I prefer your first example with dayjs.extend((instance) => instance.$xyz = 123), it's super easy to work with and all it does is to "pipe" a callback with access to the dayjs instance for the user to mutate it.

OK, here comes a problem. How can we set a global locale config?
It might because of the limitation of the structure in our current code.
We can do dayjs().setLocale(esES) on a instance, but we can't do dayjs.setLocale(esES) globally. Isn't it?
Any suggestion about a global configuration?
dayjs.local(esES)
dayjs.format() // esES by default
dayjs.format() // esES

Plus, @Frondor   @schiem  would you mind making a new pull request to branch @next, instead of direct to master.
We are currently implementing two important features locales as well as plugin system. And our code might dependence others.
I want get everything(test, docs, rollup config...) done before merge to our main branch.
Thanks

@iamkun Absolutely.  Would you prefer a new PR or just modifying the existing one?

Alright, we can't change the target branch, so I have to close this PR and send a new one to the new branch, it actually targets dev.
Anyway, what's the plugin system? Can't we tackle it by just creating an extend method that receives a callback with this passed to it? i.e.: extend (fn) { fn(this); return this } or even extend (fn) { fn.call(this); return this }

OK, here comes a problem. How can we set a global locale config?

Actually, I think there's not way we can do that without using globals or env variables (I recommend none of both). I suggest to encourage the user to create base instances with its own config, and then set() / clone() it
I've written a full example of what's done so far in my PR, #77 and new approachs to some methods

@Frondor The original intent behind the plugins was to also allow overwriting built in methods, e.g. allowing more format options without needing to add bloat to the core.  So you could still call dayjs().format("some arcane format option") instead of dayjs().pluginFormat("...").  And since it takes the place of the original method, it has access to this by default.  I'm not 100% sure that this is the best approach, I'm planning on giving it another look when I get home to see if I can come up with something more elegant.

OK, here comes a problem. How can we set a global locale config?

The way that I handled that for the plugin system was by having an instance set it on the prototype, like:
function extend(plugin) {
    const proto = Object.getPrototypeOf(this)
    proto[plugin.name] = plugin.method
}

Could overwriting a property of the prototype be done to set locales?

@schiem you can take a look to the Vue approach to plugins, you may extract some ideas from there. I personally like how the install method just receives the Vue object and you add / overrides to its prototype. Then it does some work internally depending on what you registered (for example, merging the mixins and creating the directive objects, but that's not really needed here)

Could overwriting a property of the prototype be done to set locales?

Can't see the necessity for that though, the object locales is always living in the $L property. Please, see how it works here #90 Every review is welcome


GPU Direct RDMA Out-of-Band Tensor Transport

Introduction
This PR implements GDR out-of-band transport for TensorFlow distributed runtime, complementary to current gRPC transport. It is designed to fall back to gRPC if GDR is not available on target environment.
Environment
To fully utilize GDR, the target environment has to meet 3 conditions:

There is an RDMA capable device with corresponding OFED package installed (detailed information is available from your Infiniband/RoCE/iWarp vendor), which could be verified through ibv_devinfo, e.g.

$ ibv_devinfo
hca_id:	mlx4_0
	transport:			InfiniBand (0)
	fw_ver:				2.40.7000
	node_guid:			248a:0703:00f6:3370
	sys_image_guid:			248a:0703:00f6:3370
	vendor_id:			0x02c9
	vendor_part_id:			4099
	hw_ver:				0x1
	board_id:			MT_1090110023
	phys_port_cnt:			2
	Device ports:
		port:	1
			state:			PORT_ACTIVE (4)
			max_mtu:		4096 (5)
			active_mtu:		1024 (3)
			sm_lid:			0
			port_lid:		0
			port_lmc:		0x00
			link_layer:		Ethernet

		port:	2
			state:			PORT_ACTIVE (4)
			max_mtu:		4096 (5)
			active_mtu:		1024 (3)
			sm_lid:			0
			port_lid:		0
			port_lmc:		0x00
			link_layer:		Ethernet

There is a GDR capable GPU, i.e. of Fermi, Kepler or later architecture with corresponding driver installed. The PCI-e topology could be confirmed by nvidia-smi topo -m. Fore example, in the following topology, GPU2 and GPU3 are adjacent to mlx4_0, and tensors on these devices could benefit from GDR in current implementation.

$ nvidia-smi topo -m
	GPU0	GPU1	GPU2	GPU3	mlx4_0	CPU Affinity
GPU0	 X 	PHB	SOC	SOC	SOC	0-5
GPU1	PHB	 X 	SOC	SOC	SOC	0-5
GPU2	SOC	SOC	 X 	PHB	PHB	6-11
GPU3	SOC	SOC	PHB	 X 	PHB	6-11
mlx4_0	SOC	SOC	PHB	PHB	 X

Legend:

  X   = Self
  SOC  = Connection traversing PCIe as well as the SMP link between CPU sockets(e.g. QPI)
  PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
  PXB  = Connection traversing multiple PCIe switches (without traversing the PCIe Host Bridge)
  PIX  = Connection traversing a single PCIe switch
  NV#  = Connection traversing a bonded set of # NVLinks

The nv_peer_mem kernel module is installed.

How to build and run in GDR mode
To test it out on a GDR capable environment, clone this branch by
git fetch origin pull/11392/head:gdr
git checkout gdr

Choose to enable GDR in your configure script.
Do you wish to build TensorFlow with GDR (GPU Direct RDMA) support? [y/N] y

You don't need to modify your protocol; it is designed to be compatible with protocol=grpc (the default one). If GDR is enabled, you could see something like this in your log:
2017-07-14 19:11:07.216185: I tensorflow/core/distributed_runtime/rpc/rdma.cc:434] Accepted new RDMA connection
2017-07-14 19:11:07.495787: I tensorflow/core/distributed_runtime/rpc/rdma.cc:361] RDMA endpoint connected to rdma://<IP_ADDRESS>:5000

Design
In current implementation, only tensors that reside in host memory or in GPU memory such that the GPU is adjacent to an RDMA capable NIC will use direct RDMA as its transport. When RDMA is available but not GDR, a temporary tensor copy on host memory will be used as RDMA source/destination (and copied from/to the target device). This behaviour is similar to what is currently implemented in the grpc+verbs runtime.
Note this patch is designed to be compatible with current gRPC runtime, so you do not need to change the communication protocol parameter when starting a TF server. On the other hand, it is theoretically possible to mix GDR enabled TF with non-GDR deployments in the same job. While GDR is not available, it will fallback to gRPC.
Known Issues
Currently GDR uses librdmacm which does not support loopback address such as localhost or <IP_ADDRESS>. Please manually specify an interface address of the IB device you plan to use.

Can one of the admins verify this patch?

Jenkins, test this please.

Are you depending on a host RDMA library to be installed?

tensorflow/core/distributed_runtime/rpc/rdma.cc:13:27: fatal error: rdma/rdma_cma.h: No such file or directory
#include <rdma/rdma_cma.h>

@drpngx Yes, as in case of CUDA, we assume an OFED package is installed with all the drivers and user space libraries for to RDMA to properly function. libibverbs and librdmacm are included in an OFED package.
I agree that we need some sort of compile switch, but I haven't figure out the best way to do it.

I have done some investigations and would like to purpose adding librdmacm, libibverbs, and libnl as third party dependencies (librdmacm depends on libibverbs which in turn depends on libnl, and libnl only depends on libc). All of these compile on latest Linux without any hardware requirements. For the runtime, one could simply call ibv_get_device_list(3) and check if the target environment requirements are met.
Now of course all of these are Linux specific, so we need an extra compatibility layer against non-Linux platforms. I do know there are RDMA APIs available on Windows, but I don't have a Windows box, so this has to be left to future contributors.
And for the real testing, we could use SoftRXE as a software emulated RDMA layer that runs on any platform. It does require upstream Linux kernel version at least 4.8 to enable such feature, so we do need to setup a separated CI environment for that purposes.

@shamoya Any interests on this patch? I would certainly appreciate any help from Mellanox on testing and setting up CI environment with GDR (and possibly with RoCE).

@gunan
On Jul 10, 2017 3:32 AM, "Bairen Yi"<EMAIL_ADDRESS>wrote:

@shamoya https://github.com/shamoya Any interests on this patch? I
would certainly appreciate any help from Mellanox on testing and setting up
CI environment with GDR (and possibly with RoCE).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/pull/11392#issuecomment-314068122,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AT_SbYeP7V3-l2Duo9aG9508zR3sQb1Yks5sMf2ugaJpZM4OSCMo
.

buldifier checks are failing here. Thus all the other tests are blocked.
Running do_buildifier on 204 files

tensorflow/core/distributed_runtime/rpc/BUILD # reformat callsort listsort unsafesort sort:tf_cuda_library.deps

buildifier took 1 s

FAIL: buildifier found errors and/or warnings in above BUILD files.
buildifier suggested the following changes:
248a249,254
>     linkopts = select({
>         "//conditions:default": [
>             "-libverbs",
>             "-lrdmacm",
>         ],
>     }),
250d255
<         "//tensorflow/core/distributed_runtime:rdma",
254a260
>         "//tensorflow/core/distributed_runtime:rdma",
256,258d261
<     linkopts = select({
<         "//conditions:default": ["-libverbs", "-lrdmacm"],
<     }),
Please fix manually or run buildifier <file> to auto-fix.

Could you look into this failure, so that the rest of our CI tests can run?

@gunan Yes, I am looking into it. Will ping you after it's resolved.

I am working on introducing the RDMA user space libraries as third party dependencies, but I am not familiar with converting CMake rules into bazel BUILD files. A similar case #5349 of integrating cURL seems to be a much larger effort than I expected. Would appreciate if @jart or @gunan could give some suggestions on this.

Jenkins, test this please.

@drpngx Sorry I was pushing the wrong commit. Could you ask Jenkins to test it again?

Jenkins, test this please.
On Jul 10, 2017 10:55 AM, "Bairen Yi"<EMAIL_ADDRESS>wrote:

@drpngx https://github.com/drpngx Sorry I was pushing the wrong commit.
Could you ask Jenkins to test it again?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/pull/11392#issuecomment-314183441,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AT_SbVW1ng50wP9vJmxxwfvJZTEFypiQks5sMmWcgaJpZM4OSCMo
.

Seems a rebase is needed.

Thanks @byronyi
Let me take a look at this patch and get back to you soon.
We thought of GDR in the context of the verbs code till now, so this is interesting.
Adding the RDMA libraries as third party is a good idea, good also for the grpc+verbs protocol flow.

@shamoya Glad to have your prompt reply. The last commit turns out to be a unsuccessful attempt to introduce RDMA dependency. If you would like to try out the patch on a machine with OFED installed, you could revert the last commit and build it from source.

The libraries in third_party are linked statically to the code right ?
In general, how can one provide a different library version then the one in third_party (grpc for example) ?

My initial attempt was to include only RDMA headers, which apparently is not runnable as it isn't linked against the actual library. I haven't figured it out how to use bazel to build rdma-core; they are using CMake and it's hard to port it to bazel in general. I guess we need to consult someone in the TF team on platform and portability issues.
Regarding to the version of specific third party library, I think it is hardcoded into the compilation directives. Google seems to compile everything from source for their projects, and I guess this isn't a issue for them.

Jenkins, test this please.

@drpngx I am still working on resolving the build issues...maybe we should wait for review from @poxvoculi first?

OK. I usually prefer to review when everything builds and tests properly.
Can you summarize what your questions are?
On Tue, Jul 11, 2017 at 9:46 AM, Bairen Yi<EMAIL_ADDRESS>wrote:

@drpngx https://github.com/drpngx I am still working on resolving the
build issues...maybe we should wait for review from @poxvoculi
https://github.com/poxvoculi first?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/pull/11392#issuecomment-314503570,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AT_SbSZTqPDhgHxUFwIp2qRQXqKnumSoks5sM6bKgaJpZM4OSCMo
.

Current CI doesn't have GDR environment so we are specifically testing the "fallback to gRPC" behaviour.
I've already implemented such logic in my code (here and there); but GDR environment requires RDMA user space libraries, which are currently not linked into the TF core library. Currently I am stuck by adding them as a third-party dependency (porting CMake based project to bazel).
Alternatively I could make it a separated runtime (like grpc+verbs and grpc+mpi), but that will defeat the whole point of being able to fallback to gRPC.

Or I could just add a compiler directive in configure and disable everything that's useful.

@drpngx I've tested my non-RDMA box and everything works just fine. It does require the box to have librdmacm and libibverbs installed, though. It falls back to gRPC correctly as suggested.
Is there anyway to setup a CI environment with those two libraries? They are available on all Linux distros I know of. After we confirm everything builds and tests properly, we can arrange a review on my patch.

@gunan The buildifier complaint is fixed.

As discussed in linux-rdma/rdma-core#163, I have to give up adding the RDMA libraries as third party dependencies, and rely on target environment for building GDR. This means an extra compile switch in the configure file, and also a macro that shadow all the RDMA api calls.
I will start to migrate my patch in the next few days.

@drpngx I tested locally with my non-RDMA box and it works. Would appreciate if you could let Jenkins test it again.

Jenkins, test this please.
On Jul 12, 2017 9:22 PM, "Bairen Yi"<EMAIL_ADDRESS>wrote:
@drpngx https://github.com/drpngx I tested locally with my non-RDMA box
and it works. Would appreciate if you could let Jenkins test it again.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/pull/11392#issuecomment-314966557,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AT_SbQygoshznNR4EcTPgAgEvOo9DG7Hks5sNZtxgaJpZM4OSCMo
.

@drpngx Tests are blocked by sanity checks. I've auto-fixed all of them using clang-format and buildifier. Mind to let Jenkins test again?

Jenkins, test this please.

@byronyi We haven't written a Bazel config for rdma-core internally. What I would probably do if I were you is see you can run its standard cmake/ninja build and get it to output the actual gcc/etc. commands it's running (in Bazel that's bazel build -s //foo) Then follow loosely the same pattern we did with our third party build files. You can add me as a reviewer once you come up with a PR that does this. Thank you, by the way.

@drpngx While I will be working to resolve the failing Windows/MacOS/Py3 tests, could we arrange a review as Linux CPU/GPU has already builds and tests well?

Yes, I think @poxvoculi is OK with it in principle, I will let him approve.

@drpngx That would be great. I would definitely appreciate if there are any comments on the overall design or styling issue from @poxvoculi.

Seems the patch could be further refactored using DeviceAttributes that present in RecvTensorRequest. See the commit 79228c74e64a639aeb5692b442522d4aa279f885.

Jenkins, test this please.

My main initial review question is why this PR modifies so many files in core.   We're trying to keep alternate RPC implementations in contrib for the time being.  Are there any special difficulties with putting this stuff into contrib?

No, at least I couldn't think of any specific difficulties preventing us from moving it to contrib. Let's just say we register a separated server protocol grpc+gdr, and override specific behaviors like what's currently done for verbs and MPI.
Do you have any other comments before I start migrating this patch?

No, other than the disruption to core it looks pretty good.  Our long term design goal is to enable a diversity of distributed I/O solutions to be used in a modular fashion with minimal impact on binaries that don't need them.  While we're still gaining experience with alternate solutions, we want to keep them in contrib.

@byronyi I assume you're still working on this?  Just want to keep tabs :)

@vrv
Yes, I was busy on something else for the past week. I will try to finish the migration and hopefully get this PR into rc1 or rc2. We don't want to miss the 1.3 release :)

I got this error more than once when using this patch to run benchmarks code.
2017-07-28 11:22:43.361608: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:330] Started server with target: grpc://localhost:39799
2017-07-28 11:23:28.395109: I tensorflow/core/distributed_runtime/master_session.cc:998] Start master session ec37ba189b6f7f05 with config: intra_op_para
llelism_threads: 1 gpu_options { force_gpu_compatible: true } allow_soft_placement: true
2017-07-28 11:23:34.103612: I tensorflow/core/distributed_runtime/rpc/rdma.cc:435] Accepted new RDMA connection
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1285, in _do_call
    return fn(*args)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1264, in _run_fn
    status, run_metadata)
  File "/usr/lib/python3.5/contextlib.py", line 66, in __exit__
    next(self.gen)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py", line 466, in raise_exception_on_not_ok_status
    pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.InternalError: WhereOp: Could not launch cub::DeviceReduce::Sum to count number of true indices, status: invalid
resource handle
         [[Node: report_uninitialized_variables/boolean_mask/Where = Where[_device="/job:worker/replica:0/task:0/gpu:0"](report_uninitialized_variables/b
oolean_mask/Reshape_1_S4219)]]

The above error is fixed by recent commits on master branch.

@byronyi , I did some test on benchmarks code using distributed_replicated mode and gpu as local_param_device.
I find sometimes I got 2017-07-31 17:09:05.880231: W tensorflow/core/distributed_runtime/rpc/rdma.cc:129] No RDMA device found, maybe my ib driver has some problem.
I also got *** Error in `python3': free(): invalid pointer: 0x00007f47740066d0 *** sometimes, detail is on gist.
And my 1 worker to 4 workers speedup ratio is a little strange(small).

@poxvoculi While the migration to contrib is still ongoing, I have removed most modifications to core. Those left are the ones may lead to substantial duplicate code if removed. I'd like to seek for your opinion on whether these changes are acceptable for core, so I will have a solid ground for the contrib part.

@suiyuan2009 Thanks for raising those issues.
When No RDMA device found prints here it probably means there is no available IB device present. It is a fairly simple API call (rdma_get_devices) without any dependency, so it itself is unlikely to go wrong. Let me know if this issue persists; I could take a closer look to your environment.
We have seen the invalid free during our development process, and while we haven't figured out the reasons behind, some suggested it might because of incompatible build/runtime environment, such as python or malloc version (#9328). I suspect it might because the virtualenv that you used to build TF is different from the runtime (as once in our case), but I am not sure. I will come back to this one after tidying up the current mess.
About the slow speedup, could you elaborate?

@drpngx I've finished migration to contrib. Mind to kick off Jenkins for test?

@suiyuan2009 I've finished the migration, and several potential inconsistencies in rdmacm API calls have been fixed. Would you mind to test your code again and see if your issue persists?

Jenkins, test this please.

Seems to be the same issue mentioned here. Fixed by a macro wrapping up the external rdma headers.

@byronyi , I meet tensorflow.python.framework.errors_impl.UnavailableError: Cannot bind to rdma://<IP_ADDRESS>:50543 error, gist log. I also meet tensorflow.python.framework.errors_impl.UnavailableError: Cannot find pinned memory region error, gist log.

@suiyuan2009 I am trying to fix this problem, thank you for your log! It helps a lot to locate the bug.
I've refactored the code a lot and going through all these manual test cycles every single time. Maybe I should write some unit tests for the patch to save all these efforts, but I have not figured out the best way to organize it. Any ideas are more than welcomed :)

@poxvoculi After several rounds of refactoring, this patch is finally ready for review. Please let me know if there is any issue.

I still got tensorflow.python.framework.errors_impl.UnavailableError: Cannot bind to rdma://<IP_ADDRESS>:41368 sometimes.

@suiyuan2009 I've pushed a new commit that improves error handling by including errno in the reporting error status. Mind to check again?

I've been communicating with @suiyuan2009 via another channel, and he confirms the cannot bind is an environment issue of their IB devices.

@vrv Kindly ping you for kicking off the testing again.

@tensorflow-jenkins test this please

Apart from docs, the only remaining issue I am not sure about are the CPU-only allocators. The way it is handled now is a bunch of hacks:

it overrides the default CPU allocator, which allocates 100% of all CPU RAM tensors
it re-introduces a BasicCPUAllocator which is exactly the same with the one in gpu/pool_allocator.h (I actually copied directly from there)
it could not co-exists with MKLCPUAllocator as it precedes the latter one with a higher priority

The main rationale of these hacks is that the current default cpu allocator is not visitable, so it will fail at this line. The entire BFCRdmaAllocator is introduced to avoid this failure.
Note that MKL suffers the exact same problem, and they uses the exactly same hacks:

it overrides the default CPU allocator
it re-introduces a MklSubAllocator that is equivalent to the BasicCPUAllocator
it could not co-exists with other CPU allocators

The tentative fix I will propose is just to make the current default cpu allocator subclasses from VisitableAllocator, which save all my hacks to re-introduce a visitable default cpu allocator.

It just came to my mind that I don't need to precede the MKL allocator; it's visitable (BFCAllocator) by default. I just need to precede the non-MKL default allocator, which is not visitable as in current stage.
I haven't tested it yet, but presumably the interference issue should be resolved with a lower allocator registration priority than that of MKL (higher than default).

I think it makes sense to try to make the default CPUAllocator visitable, but maybe not in this PR.  I may not understand the difficulties of doing so.  I'll open up a discussion with @vrv and @zheng-xq about it.

@tensorflow-jenkins test this please

Seems the Windows build is broken perhaps because of a crashed build earlier:
11:51:15 Another git process seems to be running in this repository, e.g.
11:51:15 an editor opened by 'git commit'. Please make sure all processes
11:51:15 are terminated then try again. If it still fails, a git process
11:51:15 may have crashed in this repository earlier:
11:51:15 remove the file manually to continue.
11:51:15 From https://github.com/tensorflow/tensorflow
11:51:15  ! [new ref]               refs/pull/5992/head -> origin/pr/5992/head  (unable to update local ref)
11:51:15 error: cannot lock ref 'refs/remotes/origin/pr/915/head': Unable to create 'c:/tf_jenkins/home/workspace/tensorflow-pr-win-cmake-py/.git/refs/remotes/origin/pr/915/head.lock': File exists.

Jenkins, test this please.
On Aug 4, 2017 1:17 PM, "Paul Tucker"<EMAIL_ADDRESS>wrote:

@poxvoculi approved this pull request.
This change looks fine to me. I'm not an expert on the OS config & BUILD
changes but they look consistent with existing practice.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/pull/11392#pullrequestreview-54467368,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AT_SbR4bGnTyjSawhZaYGXyhdX5oOdCZks5sU3xzgaJpZM4OSCMo
.

Thanks @poxvoculi. I have learned a lot as it is my first patch to OSS implementing an end to end feature. I really appreciate your taking time reviewing my code.
I am glad we could finally catch up with the 1.3 release :)
By the way, this patch is an effort I have worked on for a long time. As a grad student, it would not be possible without the funding from my lab (System Networking Lab in HKUST). I personally spent quite some time convincing my supervisor to open source it, given the condition that our credit may be acknowledged in the release notes. That would be immensely helpful to us.

@byronyi This is a nice contribution and I'm glad you were able to take the time to do it.  I look forward to hearing from appreciative users.  I don't know anything about how OS contributors may be acknowledged in the release notes.  Do you wish to inquire about that?

This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a temporary error. The following address(es) deferred:
<EMAIL_ADDRESS>Domain mazecreator.com has exceeded the max emails per hour (26/25 (104%)) allowed.  Message will be reattempted later
------- This is a copy of the message, including all the headers. ------
Received: from o10.sgmail.github.com ([<IP_ADDRESS>]:21026)
by server2.lowesthostingrates.com with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128)
(Exim 4.89)
(envelope-from<EMAIL_ADDRESS>id 1ddkcm-0000Km-IE
for<EMAIL_ADDRESS>Fri, 04 Aug 2017 16:59:46 -0500
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=github.com;
h=from:reply-to:to:cc:in-reply-to:references:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe;
s=s20150108; bh=I+XY5aaYnuMYWTkL8rLESL+Ai/o=; b=QWInvodHLYIV/qbF
h0C5AqJM6BqWPNHh0SI8YuK47PGgmls6iQqgTbtnkrUwe83GllX/QhCZ44CQpVo7
qTiWgT4UZl3756f65pVDtEKrQsleWcMSpjrODHwrN3N8/UH++xSBzVd4MBQT57kE
og+6KQnjpyNfqPFjQGbCPUSNWo8=
Received: by filter0454p1mdw1.sendgrid.net with SMTP id filter0454p1mdw1-1327-5984F0B4-49
2017-08-04 22:09:56.68207495 +0000 UTC
Received: from github-smtp2b-ext-cp1-prd.iad.github.net (github-smtp2b-ext-cp1-prd.iad.github.net [<IP_ADDRESS>])
by ismtpd0024p1mdw1.sendgrid.net (SG) with ESMTP id okXsfIqdRkmaL3TXzA__Zg
for<EMAIL_ADDRESS>Fri, 04 Aug 2017 22:09:56.621 +0000 (UTC)
Date: Fri, 04 Aug 2017 22:09:56 +0000 (UTC)
From: Bairen Yi<EMAIL_ADDRESS>Reply-To: tensorflow/tensorflow<EMAIL_ADDRESS>To: tensorflow/tensorflow<EMAIL_ADDRESS>Cc: Subscribed<EMAIL_ADDRESS>Message-ID<EMAIL_ADDRESS>In-Reply-To<EMAIL_ADDRESS>References<EMAIL_ADDRESS>Subject: Re: [tensorflow/tensorflow] GPU Direct RDMA Out-of-Band Tensor
Transport (#11392)
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--==_mimepart_5984f0b44e908_53463fb17ec05c3c4330ac";
charset=UTF-8
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: byronyi
X-GitHub-Recipient: Mazecreator
X-GitHub-Reason: subscribed
List-ID: tensorflow/tensorflow <tensorflow.tensorflow.github.com>
List-Archive: https://github.com/tensorflow/tensorflow
List-Post<EMAIL_ADDRESS>List-Unsubscribe<EMAIL_ADDRESS>https://github.com/notifications/unsubscribe/ARjzoBwn_ZD3a6exA3J9GnQmlq0OfNKMks5sU5a0gaJpZM4OSCMo
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address<EMAIL_ADDRESS>X-SG-EID: BJ4qYjf5a3yL0lCrdDNghY4YYR+k1a+cluU6wEX1Jqyv7dGeOfMFLtMqikiOeYzSQYcJgmp02pY69C
COLADrME8QZnUyZ0S9YnWWOGSyqJsLH2WJRrGsMl/d+bUTAzJXKalRdebXFVFTIP7SW53k3Gi1rPTC
A/HZttqngETr0mM59GY5BiBWZ4PdBUK4qWfog2SPOwfNZS89RiCXtbPfdinktm1FQHhNAOAgp43OzG
I=
X-Spam-Status: No, score=
X-Spam-Score:
X-Spam-Bar:
X-Ham-Report:
X-Spam-Flag: NO
----==_mimepart_5984f0b44e908_53463fb17ec05c3c4330ac
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit
We have discussed that internally, and I think a simple note similar to e8082d5780c8763b3aefd27a90b632eef832eb1c would suffice :)
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/tensorflow/tensorflow/pull/11392#issuecomment-320363773
----==_mimepart_5984f0b44e908_53463fb17ec05c3c4330ac
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
We have discussed that internally, and I think a simple note similar to e8082d5 would suffice :)
—You are receiving this because you are subscribed to this thread.Reply to this email directly, view it on GitHub, or mute the thread.

----==_mimepart_5984f0b44e908_53463fb17ec05c3c4330ac--

I meet stuck problem on 1080ti today twice, first time I got warning says tensorflow/core/common_runtime/bfc_allocator.cc:217] Allocator (GPU_2_bfc) ran out of memory trying to allocate 2.29GiB. The call, this time I got nothing, I see cpu and memory are still being used but gpu utility is 0%, this tf benchmarks program has run 3 hours...

@poxvoculi Would you mind to review the last commit again? I have fixed several issues under VLOG, some of the rationale could be found here.

After adding checksum support in VLOG, I found GDR will result in increasing loss for GPU when checksum is disabled. It seems that some synchronisation is required for truly direct DMA between NIC and GPU, and the stream executor seems to be place for me to look into.
@poxvoculi Any comments?

Seems a merge is needed. Mind to kickoff testing again?

@poxvoculi We discussed a little bit internally and agree that getting GDR shipped on 1.3 is our priority. Would you mind putting GDR on the release notes and get this PR merged? That would be great for potential users out there.

1.3 has been cut a while ago, and we won't put additional features in this
late (we're already at RC2). This will have to wait until 1.4.

So this PR will not be merged until 1.3 is released?
I'm fine with it per se, but would it be possible for you guys to let us know when will be the merge window cutdown in the future releases?
It would be great for us (and all other contributors) to make better planning ahead, instead of struggling for missed deadlines.

No, we can merge this PR any time, but it won't be in the 1.3 branch, and
if anyone installs the 1.3 binary they won't see it's effects.
The branches are cut every 6 weeks or so. I don't want to encourage aiming
features at specific releases. The deadline is usually not good for
quality. But if you say loud and early that you think a feature should be
in the next release (and if it is ready), then we can plan for that. This
feature wasn't ready in time for 1.3 (~2 weeks ago) anyway, so not much
point in hurrying too much.

You mentioned about the binary shipped, but this PR is in contrib and not built by default. The users have to turn on the related compile switch and build it from source themselves. Does the release policy apply to source release as well?

There is no source release other than getting the source code from GitHub.
So once we merge this it's available for people to use.
However if someone specifically asks to build the 1.3 branch, they will get
the source code which builds the 1.3 binary, which would not include this
change.

Thanks for clarification! I actually just realized that :)

@tensorflow-jenkins test this please

@tensorflow-jenkins test this please

Can one of the admins verify this patch?

I thought I will make some further improvements, but @rmlarsen seems to be eager to merge this. Alright then, I think I will leave them to the future 😆
Good job guys, thank you all for all the feedbacks in this thread. Hope we could have some users soon so we could hear back from them.

Thank you @byronyi for the contribution!
I hope we'll start testing it soon.
J

I find first gpu's forward propagation is much slower than other gpus on same machine when training resnet101 using grpc+gdr on a 4 gpus worker machine (grpc may have same problem, but grpc is much slower so it may hide the problem.), I have run many times, trace file is in here.

@byronyi I keep getting an error: UnavailableError: No such device: cannot bind to rdma://hsw215:2302
No matter what port I've tried I get that error. The hsw215 is a compute node. This is my cluster spec:
CLUSTER_SPEC_DICT: {'ps': ['hsw215:2300'], 'worker': ['hsw215:2301', 'hsw215:2302', 'hsw215:2303', 'hsw215:2304']}

I compiled TF 1.4 with GDR, and I have nv_peer_mem running:
$ ibv_devinfo
hca_id: mlx5_0
        transport:                      InfiniBand (0)
        fw_ver:                         10.16.1006
        node_guid:                      e41d:2d03:0006:ae40
        sys_image_guid:                 e41d:2d03:0006:ae40
        vendor_id:                      0x02c9
        vendor_part_id:                 4113
        hw_ver:                         0x0
        board_id:                       MT_1210110019
        phys_port_cnt:                  2
        Device ports:
                port:   1
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             4096 (5)
                        sm_lid:                 1
                        port_lid:               16
                        port_lmc:               0x00
                        link_layer:             InfiniBand

                port:   2
                        state:                  PORT_DOWN (1)
                        max_mtu:                4096 (5)
                        active_mtu:             4096 (5)
                        sm_lid:                 0
                        port_lid:               65535
                        port_lmc:               0x00
                        link_layer:             InfiniBand

$ service nv_peer_mem status
nv_peer_mem module is loaded.

My code runs fine with protocol='grpc+verbs'. I get messages like:
I tensorflow/contrib/verbs/rdma_mgr.cc:56] connecting to remote node /job:worker/replica:0/task:0

Rdma runs well, but I can't get the gdr working.  Thanks.

@avolkov1 The GDR runtime binds to whatever IP your assigned, even if it is not an IB device. Please check with IP address first. Sometimes it resolves to different IP for the same host on different machines.

@byronyi Thank you. Made some progress. I'm getting Unavailable: Cannot find pinned memory region errors. Have you come across that? I'm trying to run multigpu training. Again, this worked with grpc+verbs. Are there some gotchas with parameter servers on CPU.
I get the RDMA GDR endpoints working:
1: 2017-10-19 11:17:07.804151: I tensorflow/contrib/gdr/gdr_memory_manager.cc:333] Accepted new RDMA connection
2: 2017-10-19 11:17:07.803164: I tensorflow/contrib/gdr/gdr_memory_manager.cc:678] RDMA endpoint connected to rdma://hsw215.ib.cluster:2301
0: 2017-10-19 11:17:08.033571: I tensorflow/contrib/gdr/gdr_memory_manager.cc:678] RDMA endpoint connected to rdma://hsw215.ib.cluster:2301
1: 2017-10-19 11:17:08.033677: I tensorflow/contrib/gdr/gdr_memory_manager.cc:333] Accepted new RDMA connection
1: 2017-10-19 11:17:21.449746: I tensorflow/contrib/gdr/gdr_memory_manager.cc:678] RDMA endpoint connected to rdma://hsw216.ib.cluster:2300
2: 2017-10-19 11:17:21.448892: I tensorflow/contrib/gdr/gdr_memory_manager.cc:333] Accepted new RDMA connection
3: 2017-10-19 11:17:21.455124: I tensorflow/contrib/gdr/gdr_memory_manager.cc:678] RDMA endpoint connected to rdma://hsw216.ib.cluster:2300
2: 2017-10-19 11:17:21.455214: I tensorflow/contrib/gdr/gdr_memory_manager.cc:333] Accepted new RDMA connection
1: 2017-10-19 11:17:22.995750: I tensorflow/contrib/gdr/gdr_memory_manager.cc:678] RDMA endpoint connected to rdma://hsw215.ib.cluster:2300
0: 2017-10-19 11:17:22.995812: I tensorflow/contrib/gdr/gdr_memory_manager.cc:333] Accepted new RDMA connection
2: 2017-10-19 11:17:29.572063: I tensorflow/contrib/gdr/gdr_memory_manager.cc:678] RDMA endpoint connected to rdma://hsw216.ib.cluster:2301
3: 2017-10-19 11:17:29.572255: I tensorflow/contrib/gdr/gdr_memory_manager.cc:333] Accepted new RDMA connection
3: 2017-10-19 11:17:29.572637: I tensorflow/contrib/gdr/gdr_memory_manager.cc:678] RDMA endpoint connected to rdma://hsw215.ib.cluster:2300
0: 2017-10-19 11:17:29.573710: I tensorflow/contrib/gdr/gdr_memory_manager.cc:333] Accepted new RDMA connection
0: 2017-10-19 11:17:38.169948: I tensorflow/contrib/gdr/gdr_memory_manager.cc:678] RDMA endpoint connected to rdma://hsw216.ib.cluster:2301
3: 2017-10-19 11:17:38.169127: I tensorflow/contrib/gdr/gdr_memory_manager.cc:333] Accepted new RDMA connection
1: 2017-10-19 11:17:49.647909: I tensorflow/contrib/gdr/gdr_memory_manager.cc:333] Accepted new RDMA connection
3: 2017-10-19 11:17:49.646921: I tensorflow/contrib/gdr/gdr_memory_manager.cc:678] RDMA endpoint connected to rdma://hsw215.ib.cluster:2301

I'm running this on slurm. The first number above is the task id. Here's my cluster setup:
CLUSTER_SPEC_DICT: {'ps': ['hsw215.ib.cluster:2300', 'hsw216.ib.cluster:2300'], 'worker': ['hsw215.ib.cluster:2301', 'hsw216.ib.cluster:2301']}
# slurm task 0 - hsw215.ib.cluster:2300 - ps 0
# slurm task 1 - hsw215.ib.cluster:2301 - worker 0
# slurm task 2 - hsw216.ib.cluster:2300 - ps 1
# slurm task 3 - hsw216.ib.cluster:2301 - worker 1

The parameter servers run on cpu and each worker has 4 GPUs. Devices list:
['/job:ps/task:0', '/job:ps/task:1']
['/job:worker/task:0/device:GPU:0', '/job:worker/task:0/device:GPU:1', '/job:worker/task:0/device:GPU:2', '/job:worker/task:0/device:GPU:3', '/job:worker/task:1/device:GPU:0', '/job:worker
/task:1/device:GPU:1', '/job:worker/task:1/device:GPU:2', '/job:worker/task:1/device:GPU:3']

ERRORS:
1:       [[Node: _recv_concatenate_1_target_0_S581 = _Recv[client_terminated=false, recv_device="/job:ps/replica:0/task:0/device:GPU:0", send_device="/job:worker/replica:0/task:0/device:CPU:0", send_device_in
carnation=1867630968541887687, tensor_name="edge_3354__recv_concatenate_1_target_0", tensor_type=DT_FLOAT, _device="/job:ps/replica:0/task:0/device:GPU:0"]()]]
1:       [[Node: training/RMSprop/gradients/concatenate_1/concat_grad/Slice_2_S699 = _Recv[client_terminated=false, recv_device="/job:worker/replica:0/task:0/device:GPU:2", send_device="/job:ps/replica:0/task
:0/device:CPU:0", send_device_incarnation=-1707922374272032114, tensor_name="edge_1755_training/RMSprop/gradients/concatenate_1/concat_grad/Slice_2", tensor_type=DT_FLOAT, _device="/job:worker/replica:0/task:
0/device:GPU:2"]()]]
1: 2017-10-19 11:17:49.641150: W tensorflow/core/framework/op_kernel.cc:1192] Unavailable: Cannot find pinned memor
1: y region
1:       [[Node: _recv_concatenate_1_target_0_S581 = _Recv[client_terminated=false, recv_device="/job:ps/replica:0/task:0/device:GPU:0", send_device="/job:worker/replica:0/task:0/device:CPU:0", send_device_in
carnation=1867630968541887687, tensor_name="edge_3354__recv_concatenate_1_target_0", tensor_type=DT_FLOAT, _device="/job:ps/replica:0/task:0/device:GPU:0"]()]]
1:       [[Node: training/RMSprop/gradients/concatenate_1/concat_grad/Slice_2_S699 = _Recv[client_terminated=false, recv_device="/job:worker/replica:0/task:0/device:GPU:2", send_device="/job:ps/replica:0/task
:0/device:CPU:0", send_device_incarnation=-1707922374272032114, tensor_name="edge_1755_training/RMSprop/gradients/concatenate_1/concat_grad/Slice_2", tensor_type=DT_FLOAT, _device="/job:worker/replica:0/task:
0/device:GPU:2"]()]]
1: 2017-10-19 11:17:49.641155: W tensorflow/core/framework/op_kernel.cc:1192] Unavailable: Cannot find pinned memory region
1:       [[Node: _recv_concatenate_1_target_0_S581 = _Recv[client_terminated=false, recv_device="/job:ps/replica:0/task:0/device:GPU:0", send_device="/job:worker/replica:0/task:0/device:CPU:0", send_device_in
carnation=1867630968541887687, tensor_name="edge_3354__recv_concatenate_1_target_0", tensor_type=DT_FLOAT, _device="/job:ps/replica:0/task:0/device:GPU:0"]()]]
1:       [[Node: training/RMSprop/gradients/concatenate_1/concat_grad/Slice_2_S699 = _Recv[client_terminated=false, recv_device="/job:worker/replica:0/task:0/device:GPU:2", send_device="/job:ps/replica:0/task
:0/device:CPU:0", send_device_incarnation=-1707922374272032114, tensor_name="edge_1755_training/RMSprop/gradients/concatenate_1/concat_grad/Slice_2", tensor_type=DT_FLOAT, _device="/job:worker/replica:0/task:
0/device:GPU:2"]()]]

3: 2017-10-19 11:18:25.395597: E tensorflow/contrib/gdr/gdr_rendezvous_mgr.cc:71] Cannot find pinned memory region from allocator cpu_pool
3: 2017-10-19 11:18:25.395852: E tensorflow/contrib/gdr/gdr_rendezvous_mgr.cc:71] Cannot find pinned memory region from allocator cuda_host_bfc
3: 2017-10-19 11:18:25.395913: E tensorflow/contrib/gdr/gdr_rendezvous_mgr.cc:71] Cannot find pinned memory region from allocator cpu_pool
3: 2017-10-19 11:18:25.396150: E tensorflow/contrib/gdr/gdr_rendezvous_mgr.cc:71] Cannot find pinned memory region from allocator cpu_pool
3: 2017-10-19 11:18:25.396200: E tensorflow/contrib/gdr/gdr_rendezvous_mgr.cc:71] Cannot find pinned memory region from allocator cpu_pool

@avolkov1 I suspect it is because of the limit on page locked memory size. Check with ulimit -l or ulimit -a to see the limit of your current user.

@byronyi Thanks. I looked at it. It seems to be unlimited.
hsw228$ ulimit -l
unlimited
hsw228$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 1031351
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 4096
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) unlimited
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

@avolkov1 I failed to reproduce your issue on a fresh installation of vendor provided OFED on my testbed. Would you mind to paste the full log?

@byronyi Will do. Thank you very much. Give me a day or two (busy with work related stuff). I'll post the error log and the code I use to run.


unusual activity

"Our systems have detected unusual activity from your device. Please try again later."}

Same issue here

The same

same

same, is it a problem with chatgpt-plus?

same, is it a problem with chatgpt-plus?

I use ChatGPT 3.5 get the same error

https://github.com/Zai-Kun/reverse-engineered-chatgpt/issues/51#issuecomment-2122503867
I'm going to do some research on this but it looks very complex.

same


Quick start example fails

Describe the bug
Quick start example from home page fails when run per instructions. AWS provider version is not specified but vpc module version is. It's old version of 3.5.0 is incompatible with latest aws provider. enable_classiclink property is not supported anymore.
Steps To Reproduce
Follow quick start example.
Expected behavior
terragrunt apply should not fail like this.
Nice to haves
Terminal output:
│ Error: Unsupported argument
│
│   on main.tf line 32, in resource "aws_vpc" "this":
│   32:   enable_classiclink               = var.enable_classiclink
│
│ An argument named "enable_classiclink" is not expected here.
╵
╷
│ Error: Unsupported argument
│
│   on main.tf line 33, in resource "aws_vpc" "this":
│   33:   enable_classiclink_dns_support   = var.enable_classiclink_dns_support
│
│ An argument named "enable_classiclink_dns_support" is not expected here.
╵
╷
│ Error: Unsupported argument
│
│   on main.tf line 1306, in resource "aws_default_vpc" "this":
│ 1306:   enable_classiclink   = var.default_vpc_enable_classiclink
│
│ An argument named "enable_classiclink" is not expected here.
╵

Versions

Terragrunt version: 0.52.0
OpenTofu/Terraform version: Terraform v1.8.5
Environment details (Ubuntu 20.04, Windows 10, etc.): ubuntu 24.04

Thanks for reporting this @james64 !


(feat-rocksdb) Implement scratch trie store

Implements a scratch trie store. This change implements a cache to eliminate interstitial roots from being written to the database. In my tests, this means that the commit_step runs in ~3 seconds consistently, where before we'd see spikes as big as 60s. This also substantially reduced write amplification due to interstitial tries being no longer written to disk. This is effectively "bulk update" of the trie.

Significant changes here already merged to feat-rocksdb


[BUG][ERROR]  Nginx 启动 失败

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
[ERROR]  Nginx 启动 失败

ystemctl status nginx.service
● nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2022-10-03 10:27:41 EDT; 14s ago
Docs: http://nginx.org/en/docs/
Process: 3630 ExecStop=/bin/sh -c /bin/kill -s TERM $(/bin/cat /var/run/nginx.pid) (code=exited, status=0/SUCCESS)
Process: 3641 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
Main PID: 3604 (code=exited, status=0/SUCCESS)
Oct 03 10:27:41 racknerd-42fa39 systemd[1]: Starting nginx - high performance web server...
Oct 03 10:27:41 racknerd-42fa39 nginx[3641]: nginx: [emerg] SSL_CTX_set1_curves_list("X25519:P-256:P-384:P-521") failed
Oct 03 10:27:41 racknerd-42fa39 systemd[1]: nginx.service: control process exited, code=exited status=1
Oct 03 10:27:41 racknerd-42fa39 systemd[1]: Failed to start nginx - high performance web server.
Oct 03 10:27:41 racknerd-42fa39 systemd[1]: Unit nginx.service entered failed state.
Oct 03 10:27:41 racknerd-42fa39 systemd[1]: nginx.service failed.

同错误，  centos 7

同错误， centos 7

@weilingwei @zywj @zyu Debian 11 please.

同错cenos7

@myy520 https://github.com/wulabing/Xray_onekey/issues/425#issuecomment-1266432035

same error

same error centos 7

@hadow Debian 10+ / Ubuntu 20.04+, plz.

same error

同错误，centos 7

same error centos 7

用centos8 就不报错了

更换debian解决。

SSL_CTX_set1_curves_list("X25519:P-256:P-384:P-521") failed
把x25519加密删掉就好，在配置文件里


Fixed shadow page with internal link and smart-content

Tasks:

[x] test coverage
[ ] gather feedback for my changes
[x] added changelog line

Informations:

Q
A

Tests pass?
yes

Fixed tickets
fixes https://github.com/sulu-cmf/sulu-standard/issues/400

BC Breaks
none

Doc
none

Please make the publish dropdown disabled when the shadow option is activated.


feat: validation for security definitions for OAS3

validation for security definitions in OAS3

@mkistler Somehow I lost the ability to suggest changes some time ago and haven't seen the option since. Very frustrating because it is a great feature!

@dpopp07 I think it currently only works on public GithHub -- not yet available in IBM GHE.

Does not work for me on public unfortunately 😕

:tada: This PR is included in version 0.11.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Reduce css specificity for cursor and activeline classes

Also some general improvements to material.css and solarized.css
Lines like https://github.com/codemirror/CodeMirror/compare/master...vincentwoo:master#diff-33646e9ee4d04eedb98a991a636c2302L26 can get pretty dangerous - I think cases like this are a good reason to advocate for using SASS or any kind of preprocessor step to standardize theme CSS.

Thanks. Merged as a7d443ec82c and updated in f06c53f (the CSS file intentionally splits user-overridable styles from internal styles, so the fact that a rule was duplicated and that there was an empty rule were not bugs)


Log artifact not annotated to the pod when an output artifact fails

Setup

K8s provider: GCP running 1.17.9-gke.6300
Argo version: 2.10.2:

I also tried with argoproj/argocli:latest and observe the same bug.
I haven't tried with argoproj/workflow-controller:latest.

What happen
When a folder of an output artifact in the container does not exist, upon termination, argo can't upload it (which seems obvious). But in consequence the pod does not get annotated with the log artifact which has been correctly uploaded.
Is that possible to annotate the pod even if one or more output artifacts has failed?
Reproduce

Working example: here /data/outputs is created and so upon termination the log and outputs artifacts get uploaded. The last line of the main logs shows level=info msg="Annotating pod with output".

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: bug-log-argo-will-succeed-
spec:
  entrypoint: entrypoint
  templates:
    - name: entrypoint
      script:
        image: alpine
        command: [sh]
        source: |
          set -e
          echo "Write outputs"
          mkdir -p /data/outputs
          echo "result" > /data/outputs/results.csv
      outputs:
        artifacts:
          - name: input-data
            path: /data/outputs/
            s3:
              key: tests/outputs/
              bucket: xxxxx-data
              endpoint: s3.amazonaws.com
              accessKeySecret:
                name: xxx-secrets
                key: xxxxxxx
              secretKeySecret:
                name: xxx-secrets
                key: xxxxxxx
            archive:
              none: {}

Failing example: here /data/outputs is not created during the workflow (for example the workflow failed during its execution) and so upon termination the log artifact get uploaded but the not the outputs one. In consequence the pod is not annotated and so the associated archived workflow cannot display the logs. But the logs can be accessed by browsing the bucket we are using to store the logs.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: bug-log-argo-will-fail-
spec:
  entrypoint: entrypoint
  templates:
    - name: entrypoint
      script:
        image: alpine
        command: [sh]
        source: |
          set -e
          echo "Do not write outputs"

          # random command so it fails
          fdsfsdfsdf
      outputs:
        artifacts:
          - name: input-data
            path: /data/outputs/
            s3:
              key: tests/outputs/
              bucket: xxxx-data
              endpoint: s3.amazonaws.com
              accessKeySecret:
                name: xx-secrets
                key: xxxx
              secretKeySecret:
                name: xxx-secrets
                key: xxxx
            archive:
              none: {}

Working example without output artifact: same setup as above but without an output artifact. In that case the pod get correctly annotated with the log artifact. All good even when the workflow fails.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: bug-log-argo-will-fail-
spec:
  entrypoint: entrypoint
  templates:
    - name: entrypoint
      script:
        image: alpine
        command: [sh]
        source: |
          set -e
          echo "Do not write outputs"

          # random command so it fails
          fdsfsdfsdf

Message from the maintainers:
Impacted by this bug? Give it a 👍. We prioritise the issues with the most 👍.

Would you like to make an attempt to fix this? This will be in executor.go.

In main.go (https://github.com/argoproj/argo/blob/master/cmd/argoexec/commands/wait.go):
// Saving logs
logArt, err := wfExecutor.SaveLogs()
if err != nil {
  wfExecutor.AddError(err)
  return err
}
// Saving output parameters
err = wfExecutor.SaveParameters()
if err != nil {
  wfExecutor.AddError(err)
  return err
}
// Saving output artifacts
err = wfExecutor.SaveArtifacts()
if err != nil {
  wfExecutor.AddError(err)
  return err
}
err = wfExecutor.AnnotateOutputs(logArt)
if err != nil {
  wfExecutor.AddError(err)
  return err
}

Would the fix be a simple as running AnnotateOutputs() before SaveParameters() and directly after SaveLogs()?

I wonder if AnnotateOutputs should be done using defer?

This is where my Go skills are lacking :-) I honestly don't know what would be the best approach here. I think it's important to annotate the log artifact to the pod straight after SaveLogs() so annotations are not lost upon failure. But that being said maybe there is a more smart and elegant way to do that in go.
If you could take care of it I would be very grateful!


Orientational sites

This PR uses blob_dog to identify the orientations which are explored more often.
Now running plot_rectilinear(add_peaks=True) you can obtain figures like this one:

The calculation of the peaks has been implemented by introducing an OrientationalVolume class, inherited from Volume.

This PR may be redundant once #306 is implemented

I fixed all the merge conflicts with main in this PR

I'm going to close this for now because of inactivity and no clear path forward.


bit: add prjoxide

Please remove the condarc file in a package. condarc with only defaults basically changes nothing.


Update jira-connector.md

Add a prerequisite for the Jira Connector regarding the integration with feedback items

Publication approved over Slack.


Can we keep the library C++11 only?

This is a very good library and compiles cleanly with gcc 4.8.5, the lowest version of gcc that supports C++11. Can we replace all usage of C++14 with C++11?
I'm happy to provide a PR if you agree.

Please add the PR and I'll take a look.
FYI:
One think I want to do in 2017 is moving towards less queuing complexity
and separate input channels to sinks vs log messages. I believe this would
have a radical performance increase without showing some of the bad aspects
of the lock-free loggers that I've so far seen on the market.  This work
all depends on how crazy my work situation is of course. G3log is done
off-business hours and with zero pay so obviously my day (sometimes night)
work takes precedence. If the queueing change takes place it'll likely be
using c++17.
Of course one option would be to let g3log be as is and instead spin up
g4log ;)
That's the path I took with g2log -> g3log
Cheers
Kjell

Contact Information
Kjell Hedström
Mobile:  +1 -<PHONE_NUMBER> <(617)%20378-1915>
E-mail<EMAIL_ADDRESS>
On Fri, Jun 16, 2017 at 8:18 AM, Rui Pacheco<EMAIL_ADDRESS>wrote:

This is a very good library and compiles cleanly with gcc 4.8.5, the
lowest version of gcc that supports C++11. Can we replace all usage of
C++14 with C++11?
I'm happy to provide a PR if you agree.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/KjellKod/g3log/issues/207, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAUP3qe0oBuzUTIKyclpiDe_-fq4x6gBks5sEo7SgaJpZM4N8hFU
.

I stand by g4log :)
It's too early to support C++17.


feat: add boolean dtype support to array/convert

Resolves: Subtask of #2304
Description

What is the purpose of this pull request?

This pull request:

This PR will add boolean datatype support in array/convert.

Related Issues

Does this pull request have any related issues?

This pull request:
Questions

Any questions for reviewers of this pull request?

No.
Other

Any other information relevant to this pull request? This may include screenshots, references, and/or implementation notes.

No.
Checklist

Please ensure the following tasks are completed before submitting this pull request.

[x] Read, understood, and followed the contributing guidelines.

@stdlib-js/reviewers

@kgryte I have updated the implementation for adding support of BooleanArray. It follows below mentioned rules:

Convert ComplexArray into BooleanArray (If both real and imaginary part of complex number is zero then false else true)
Convert BooleanArray into ComplexArray (Set only real part of complex number and imaginary part as 0.0)
Convert Array into BooleanArray (Convert value of array into true/false)
Convert BooleanArray into Array (If value is true then 1 else 0)


reminder is not a remainder.

Please verify your spelling because it confuses people. Reminder is something that reminds you of something else.Remainder is what REMAINS of something after a certain action.

Thank you!


View email address as a contact information

As a relatively new user, I can view email addresses as part of contact information, so that it would be easier for me to contact the respective client.

Closing as feature already exists.


Fixed "About Us " page

https://github.com/GameSphere-MultiPlayer/GameSphere3.0/assets/101503723/113a3b16-e5de-485a-b8cb-7dc9ae248e0d

Please review and merge my PR.


Add a custom 500 page [#157]

I added the image linked to in issue #176
created different sized versions of image
added the text from the above issue

TODO

[x] design guidance on text and link styles
[x] the copy says "page not here", which is sort of wrong for a 500
[x] work on the mobile-sized/cropped breakpoints a little more (newer smartphones can probably have a non-cropped version due to hi dpi)
[x] match site's p max-width

Demo
https://crimethinc-staging-pr-546.herokuapp.com/500.html

Very exciting! Thanks for picking this one up. It's been in the back of my brain for a long time.

the copy says "page not here", which is sort of wrong for a 500

How about something like:

Error 500: Internal App Error
Something went wrong. It's probably our fault, not yours. (We all alerted of all errors on the site and will try to fix whatever is broken.)
To go hunting for the page you want, use our sophisticated search engine, or peruse our reading library. To report a problem to us, email us.

design guidance on text and link styles

I would make the links the same color as the rest of the text. Underlined is good. Maybe embolden them too.
Color: I think white text could look really nice. It might require dropping the white point to 0.9 (in the Levels palette) on that image.

Nav.
I know this isn't in the issue / spec, but I wouldn't hate if these error pages had the header/logo/nav on them too. If you feel like that's out of scope for this issue, that's cool. We can make it into its own issue if you prefer.

Progress is looking better. Here's some more feedback:

[ ] Change "Error 500: Internal App Error" to "500: Internal App Error"
[ ] Add a wrapper element around the two <p>s and give that the black background, so that they're in the same box
[ ] actually try putting the heading in that box too. see how that looks.

Looking good!

@veganstraightedge
In these 4 screenshots the h1 is either 2em or 3em and included in the background or not. Which do you prefer?
2em for h1
header in background

header above background

3em for h1
header in background

header above background

I like 2em for h1 + header in background 👍🏻

@veganstraightedge I think this is done enough for me to move onto the 404.html. after that I will add the site header to both
not sure if the images need to be uploaded to the cdn instead of stored in /public, but I wanted to see how it performed in prod to see if I needed to cut any more image variations

Great work on this, @astronaut-wannabe! ‼⭐🌟🎉
I agree that doing 404 as a separate PR and then adding nav to both is a good idea.
I'll move the image to S3/CloudFront and update the URLs in the <img> tags.


Multiple image?

Nice library and easy implementation. Just one request to have an array of images? :D

Thanks! Great recommendation! I will do it.

@adamhongmy I implemented your recommendation. Please check it and if you like make me more feedback! Thanks

@agustinslions Hello! Thanks for the effort but I couldn't see any new codes.  Am I missing something?

Hello! Now you can see the new codes. I forgot the most important things... merge :) .


Query: Compatibility with Empatica embrace

Can this code be used with Empatica Embrace?

No, this library works only with E4 device. Currently we do not provide SDK support for embrace.


Preconditioner param linear solver

Description of the problem
The main linear solvers in Lethe were gmres for GMRES preconditioned with ILU and amg for GMRES preconditioned with AMG; this was confusing and did not represent the actual linear solver being used. Due to this the linear solvers were refactored.
Description of the solution
A new parameter specifying the preconditioner was created. Now, it is possible to choose as method GMRES preconditioned by either AMG or ILU.  In the gls_navier_stokes solver and the gd_navier_stokes solver, the solve_system_AMG method was removed and now the preconditioner is chosen within the solve_system_GMRES call.
How Has This Been Tested?
All the application tests that specified linear solver parameters were updated with the new parameter. If gmres was specified, the preconditioner was set to ilu, if amg was specified the method was set to gmres and the preconditioner to amg.
Documentation

[X] doc/source/parameters/cfd/linear_solver_control.rst: linear solver documentation in the parameters section
[X] All the examples that contain a linear solver section in the documentation were updated as well (both their .prm file and the .rst file).

Comments
This change not only improves the linear solvers in Lethe, but leaves a better infrastructure if other preconditioners want to be added (as it is the case for the matrix-free solvers).

Thank you for all the comments and suggestions. I have addressed them all now :)


LLVM dependency missing symbols on Linux

joao@joao-HP:~/dev/dotnet/corert/bin/Linux.x64.Debug/tools$ dotnet ilc.dll --out app hello/bin/Debug/netcoreapp2.2/hello.dll --reference ../sdk/System.Private.CoreLib.dll --reference ../framework/System.Runtime.dll --verbose --wasm

Unhandled Exception: System.EntryPointNotFoundException: Unable to find an entry point named 'LLVMModuleCreateWithName' in shared library 'libLLVM'.
   at LLVMSharp.LLVM.ModuleCreateWithName(String ModuleID)

CoreRT is using libllvm version 6.0.0:
6.0.0-beta1/runtimes/linux-x64/native/libLLVM.so:
joao@joao-HP:~/dev/dotnet/corert/packages/libllvm$ llvm-nm-6.0 6.0.0-beta1/runtimes/linux-x64/native/libLLVM.so | grep LLVMModuleCreateWithName
joao@joao-HP:~/dev/dotnet/corert/packages/libllvm$

The previous package provides the APIs as expected:
5.0.1/runtimes/linux-x64/native/libLLVM.so:
joao@joao-HP:~/dev/dotnet/corert/packages/libllvm$ llvm-nm-6.0 5.0.1/runtimes/linux-x64/native/libLLVM.so | grep LLVMModuleCreateWithName
0000000000838d20 T LLVMModuleCreateWithName
0000000000838db0 T LLVMModuleCreateWithNameInContext

I am surprised this has not been caught by the CI bots. Is WebAssembly not currently tested as part of CI?
Reported upstream: https://github.com/Microsoft/LLVMSharp/issues/88

I wonder if this will still be a problem if we upgrade to LLVMSharp 9 #7983


Font issues after upgrading to the latest version

I have a problem with radio buttons and check marks displaying correctly in the latest version (1.1.215). When using the version 0.8.505 (both pdf.js and compatibility.js) everything looks fine.
Once upgraded, all radio buttons and check marks are replaced with weird symbols.
When opening my pdf files on http://mozilla.github.io/pdf.js/web/viewer.html I see these weird symbols as well.
The link to pdf file:
https://www.dropbox.com/s/swbd7be6sjq15pf/2319.pdf?dl=0

As outlined in the first paragraph of https://github.com/mozilla/pdf.js/blob/master/CONTRIBUTING.md, please provide a link to the PDF file.

Sorry, I couldn't attach the file and haven't thought about the link. Here's the link: https://www.dropbox.com/s/swbd7be6sjq15pf/2319.pdf?dl=0

From the console:
PDF a75a1137f00857247965f974753f9384 [1.5 - / -] (PDF.js: 1.1.377) viewer.js:6645:1
Warning: Wingdings font without embedded font file, falling back to the ZapfDingbats encoding. pdf.worker.js:224:5

Thanks for the prompt response. So this Wingdings font was in the old versions and was later removed?

So this Wingdings font was in the old versions and was later removed?

No, we've never had support for non-embedded Wingdings fonts.
It's possible that some browsers (e.g. IE) where able to fallback to the correct font; but in general, I don't think that this has ever worked correctly across browsers (e.g. it did not work in Firefox using older versions of PDF.js).

Wingdings is available on windows, but the name is "Wingdings-Regular" so it doesn't match.

Closing as WONTFIX, since there's generally speaking not much we can actually do here unfortunately!
Wingdings is a non-standard font, only natively available on Windows, and as such PDF documents themselves should be embedding the necessary font data to ensure that rendering will be correct on all platforms (otherwise the "Portable" part of the PDF acronym isn't actually true).
Given that there doesn't appear to be a free/libre "Wingdings"-version available, we thus cannot ship any Wingdings font data with the PDF.js library either (as opposed to e.g. the "normal" Symbol fonts).


Remove _total when passed in counter metric name

Hi @csmarchbanks, requesting to please review the fix for #912

See https://github.com/prometheus/client_python/issues/912#issuecomment-1714458302, but I don't think this is necessary as Metric is internal only and we handle removing an extra _total everywhere that instantiates a Metric already.


Suppress warnings from exif_read_data

In a similar vein to #243, this update silences exif data warnings.
When importing thousands of images, a small percentage created exif warnings and therefore were unable to be processed, leaving gaps in our catalog data.
I would presume the majority would prefer image conversions to continue, rather than error.

Thanks!


[Feature Request] enable pasting copied elements to text based applications

Expected Behaviour
When I select several components I would like to be able to paste them into other applications (text editors ala Notepad) as the list (ID, Name) delimited by newline.
Nice To Have
If pasting to Excel sheet, it could be already pasted as the table.

This is not possible without some major changes, as the current behaviour is to copy selected components as Java objects to the clipboard so that they can be pasted in diagrams.

This is not possible without some major changes, as the current behaviour is to copy selected components as Java objects to the clipboard so that they can be pasted in diagrams.

Actually, that's not quite true. It is possible to set more than one data type in the clipboard, including text. But agreeing on a useful format that would suit the majority is another matter.

Indeed. In fact I can think of 3 data types:

data for Archi (DB and view data)
representation in bitmap / vectors (e.g. for copying to Powerpoint)
textual representation (as requested in this issue)


Sorting of group keys is now optional

Added a "sortedKeys" option to prevent grouped keys from being sorted automatically, as requested in #37 (and needed by me :smile: )
Example:
  _choiceConfig() => S2ChoiceConfig(
        useDivider: true,
        sortedKeys: false,
      );

Hi @mauriziopinotti, thanks for your contribution, I really appreciate it.
I think it would be better if we provide the configuration for the sort function it self, and provide the default function for ascending and descending order, if the config value is null then disable the sorting
With this we can easily change ascending or descending order, define custom sort function, or disable sorting with a single configuration, you can see the implementation here
This feature will be available in the next major release, because I already committing a breaking changes into the master branch.

I released https://pub.dev/packages/flutter_awesome_select with fixed null safety.
Could you check that everything works for you?


Article does match the product

It appears that the product must have updated since the release of this documentation.  1)  What I am trying to do is insert Sales Force records into Dynamics 365 using an insert.   When I use insert, it tells me that it is not supported.  The documentation refers to several json properties, but this doesn't match the product.  2)  There are json examples of properties related to the sink, authentication, organization uri, etc.    When I view the sink connection properties, I can see these same properties fine, they were set up during the wizard configuration of the copy activity.  When I view these properties in the json they do not appear.  This documentation implies that I should see them in the json.
[Enter feedback here]

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

ID: 304d4c46-c0ac-05c9-15eb-d8b677ec5e90
Version Independent ID: 36a79d36-2b72-2722-68e5-e167f9a2cd41
Content: Copy data in Dynamics (Common Data Service) - Azure Data Factory
Content Source: articles/data-factory/connector-dynamics-crm-office-365.md
Service: data-factory
GitHub Login: @linda33wj
Microsoft Alias: jingwang

@jennabourgeois  Thanks for the feedback! Your feedback  has been shared with the content owner for further review.

@jennabourgeois thanks for the feedback. Could you help elaborate what exact properties you observed mismatch/inconsistency and disappeared in JSON?

The settings described for the D365 connector didn’t seem to match.
Jenna
From: Linda Wang<EMAIL_ADDRESS>Sent: Monday, August 3, 2020 1:53 AM
To: MicrosoftDocs/azure-docs<EMAIL_ADDRESS>Cc: Jenna Bourgeois<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/azure-docs] Article does match the product (#59386)
@jennabourgeoishttps://github.com/jennabourgeois thanks for the feedback. Could you help elaborate what exact properties you observed mismatch/inconsistency and disappeared in JSON?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/azure-docs/issues/59386#issuecomment-667868464, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGDW3L2Z3O5MLT3EDPKFK33R6ZUE7ANCNFSM4PC6TGXQ.

Thanks for your dedication to our documentation. We have not heard back from you for quite a while so we are closing this issue for now, but feel free to comment here as necessary. #please-close

We didn't get the answer timely.  The customer fired us as a result and they have refused to pay for one month of our time.
Jenna M Bourgeois
CEO Dynamics Intelligence Inc
http://www.dynamicsintelligence.us
206.483.8610

From: Jon Burchel @.>
Sent: Thursday, March 25, 2021 3:17 PM
To: MicrosoftDocs/azure-docs @.>
Cc: Jenna Bourgeois @.>; Mention @.>
Subject: Re: [MicrosoftDocs/azure-docs] Article does match the product (#59386)
Thanks for your dedication to our documentation. We have not heard back from you for quite a while so we are closing this issue for now, but feel free to comment here as necessary. #please-close
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F59386%23issuecomment-807504583&data=04|01|jenna%40dynamicsintelligence.us|7997ca3aa5b845b51f2c08d8efd35fa0|89baed100f3f40f9821c1b5cb49500b4|0|0|637523038427319360|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=uMkJXd8WXY%2FKoq5NLx%2FcDvg9NEIXnS4Pa7yNkr4q1j8%3D&reserved=0, or unsubscribehttps://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAGDW3L24YH6XKEV6OMTHF4LTFOR55ANCNFSM4PC6TGXQ&data=04|01|jenna%40dynamicsintelligence.us|7997ca3aa5b845b51f2c08d8efd35fa0|89baed100f3f40f9821c1b5cb49500b4|0|0|637523038427329354|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=YlAu8k9%2BUFBfoAiNrwOj6XzfsoiZO1I%2FtEulnaW7kJU%3D&reserved=0.


x/net/http2: http2: no cached connection was available

What version of Go are you using (go version)?
go version go1.8.3 linux/amd64
Does this issue reproduce with the latest release?
Unknown, checking now
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/sjennings/projects/go"
GORACE=""
GOROOT="/home/sjennings/.gvm/gos/go1.8.3"
GOTOOLDIR="/home/sjennings/.gvm/gos/go1.8.3/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build663365804=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"

What did you do?
In Kubernetes 1.8, we are seeing $SUBJECT error message on pods that have both a readiness and liveness probe.  In this case, the probes are nearly simultaneous (within microseconds).  About 2-3 times per hour, there is a timing collision resulting in the failure of one of the two probes with http2: no cached connection was available
I confirmed the disabling http2 for the probe connections causes the issue not to occur.
I also confirmed that disabling one of the probes causes the issue not to occur.
This is not load related as the transport is only used for the probes and there are 2 probes every 5 seconds.  It is a timing issue.
What did you expect to see?
The connection succeeds every time
What did you see instead?
http2: no cached connection was available
Additional References
https://github.com/golang/go/issues/16582
https://github.com/kubernetes/kubernetes/issues/49740
I'll try to write a tight recreator for this since it is difficult and time consuming to recreate on Kubernetes.
@smarterclayton @derekwaynecarr

/cc @tombergan
Tom, does this sound familiar? My memory's still fuzzy from my leave.
I see #16582 is marked fixed but later comments (https://github.com/golang/go/issues/16582#issuecomment-333129151) suggest it's still happening on Go 1.9.x.

@WillSewell
I am still receiving this error on Go 1.9 when performing a large number of concurrent requests (400). Looking at the http2 verbose logs, I can see a large number of http2: no cached connection was available, but only a small % of these bubble up to http.Client.Do.

Do you have a repro you can share? I cannot repro with https://play.golang.org/p/zKthX7Y9RW (from #16582).

I was looking through the source code to see why these were not being caught by the fix in 7a62274. The only other place I can see RoundTripper.RoundTrip being called where http2ErrNoCachedConn is not being handled is on this line: https://github.com/golang/go/blob/master/src/net/http/transport.go#L371. I believe the concrete implementation here is noDialH2RoundTripper since we are configuring the client with https://github.com/golang/net/blob/master/http2/transport.go#L125. So my suspicion is this is where the error is being returned from. Is there a reason there is no retrying performed after a error on https://github.com/golang/go/blob/master/src/net/http/transport.go#L371?

Perhaps I misunderstood... noDialH2RoundTripper cannot return ErrNoCachedConn. It translates that error to ErrSkipAltProtocol. Did you mean s/ErrNoCachedConn/ErrSkipAltProtocol/ ?
According to the comments, there is a known possible race with CloseIdleConnections (https://github.com/golang/net/blob/master/http2/client_conn_pool.go#L221). @WillSewell and @sjenning, can you verify that you're not calling CloseIdleConnections?

We are not calling CloseIdleConnections, at least not at the time the issue occurs.
FYI, we worked around this in kube by using seperate transports for the two probe types such that a timing collision doesn't occur https://github.com/kubernetes/kubernetes/pull/53318

I wonder if this happens because the transport uses DisableKeepAlives=true?
https://github.com/kubernetes/kubernetes/blob/master/pkg/probe/http/http.go#L41
Looks like yes. I cannot repro with DisableKeepAlives=false, but I can repro with DisableKeepAlives=true. For the record:
https://play.golang.org/p/8-KRho9KPH
My guess: the second request selects the same connection as the first request, but its RoundTrip doesn't execute until after the first request completes. By that point, the connection has gone idle and shut down because keep alives are disabled. This could be a manifestation of https://github.com/golang/net/blob/master/http2/client_conn_pool.go#L221
// TODO: don't close a cc if it was just added to the pool
// milliseconds ago and has never been used. There's currently
// a small race window with the HTTP/1 Transport's integration
// where it can add an idle conn just before using it, and
// somebody else can concurrently call CloseIdleConns and

@sjenning, do you know why you're disabling keep alives? (Wild guess: that flag was added with HTTP/1.1 in mind. Since these are infrequent probes, there's no reason to keep the connection open, so keep alives were disabled.)
@WillSewell, are you also also disabling keep alives?

DisableKeepAlives=true was result of https://github.com/kubernetes/kubernetes/pull/15733 which fixed https://github.com/kubernetes/kubernetes/issues/15643

Do you have a repro you can share? I cannot repro with https://play.golang.org/p/zKthX7Y9RW (from #16582).

I also can't reproduce it when running your example. I'm afraid I don't think I have time right now to boil it down to a minimal test case (I just tried and failed).

According to the comments, there is a known possible race with CloseIdleConnections (https://github.com/golang/net/blob/master/http2/client_conn_pool.go#L221). @WillSewell and @sjenning, can you verify that you're not calling CloseIdleConnections?

I'm not.

@WillSewell, are you also also disabling keep alives?

I'm not, although I do get the error when running your example with keep alives disabled.

If import "golang.org/x/net/http2" directly and use its ConfigureTransport, this fix [7a62274] will not work.
if err == http2ErrNoCachedConn {     ... }
The err is http2.ErrNoCachedConn instead of http2ErrNoCachedConn.

For my interest, in which go version will this be fixed? How could I find out by myself?


Parsing: recognize literal hashes instead of blocks without () (unexpected token: =>)

hash.should eq({4 => "Anna", 3 => "Ary", 5 => "Alice"}) # works fine

hash.should eq {4 => "Anna", 3 => "Ary", 5 => "Alice"} # breaks
#Syntax error in ./spec/std/enumerable_spec.cr:310: unexpected token: =>
#
#      hash.should eq {4=>"Anna", 3=>"Ary", 5=>"Alice"}
#                      ^

I think that if it has a clear key => value it should be possible to parse as a hash - would be nice at least :)
PS: Personally I'd also be happy if {} style blocks were dropped as I hate it in ruby that 2 immensely important constructs use such a similar literal notation. I do lots of a teaching and it's a nightmare :) But I'm probably the minority here. If others feel the same way, then let's open a new issue :)

I agree with the first point. Hash literals should be easier to parse. I disagree strongly, however, with the removal of braced blocks.

Related to #891

Thanks for triaging the issues @jhass ! :) :+1:

I don't think will do this. It requires a big look-ahead in every { in a call. There's also the thing that it can also be confused with a tuple:
foo.bar {a, b = c, d} # a block with multiple assignment, or a tuple?

And even if we solve that ambiguity, I think making foo { ... } always denote a block is visually easier to distinguish from maybe a hash and a tuple, so the programmer doesn't have to stop at every { and ask that question.


std.experimental.logger  default values after variadic template parameters

rburners reported this on 2018-02-22T11:07:17Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=18491
Description
changes based on
https://dlang.org/changelog/2.079.0.html#default_after_variadic

rburners commented on 2018-02-22T15:00:27Z
https://github.com/dlang/phobos/pull/6208


fix: Code review fixes for exactly once delivery

Code review fixes for #8891

Merging this, so that I can rebase and code the remainder of requirements for exactly once delivery.


Amplify pull fails after turning off Amplify Studio

How did you install the Amplify CLI?
npm
If applicable, what version of Node.js are you using?
v16.14.0
Amplify CLI Version
11.0.3
What operating system are you using?
Mac OS
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
When I turned on Amplify Studio and ran 'amplify pull', it worked fine. However, when I turned off Amplify Studio and then ran 'amplify pull', an error occurred.
Describe the bug
Following Error message was displayed.
amplify pull --appId {xxx} ---envName {xxx}
Failed to fetch Amplify Studio credentials
IdentityPool 'xxx' not found.

Reproduction steps

Creating Next.js project
Run amplify pull an existing env
Turn on Amplify Studio
Run amplify pull
Turn off Amplify Studio
Run amplify pull (Error occurred)

Project Identifier
No response
Log output

# Put your logs below this line

Additional information
No response
Before submitting, please confirm:

[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

Hey @momomox :wave: thanks for raising this! Can you try to switch your auth method locally with amplify configure project or by manually modifying the amplify/.config/local-aws-info.json file?

Hello @josefaidt  Thank you for your quick reply! I tried to switch auth method with amplify configure project and I could run amplify pull once.  However, after the second time, the following error code is displayed.
Current environment cannot be determined. Resolution: Use 'amplify init' in the root of your app directory to create a new environment.
I tried to run amplify init with existing env and following error was displayed.
⚠ Failed to resolve AppId, skipping parameter download. ✖ There was an error initializing your environment. 🛑 File at path: '/xxx/amplify/backend/backend-config.json' does not exist
This error occurs only in the project that do not run amplify init. (only amplify pull with existing env)

@josefaidt Thank you for your reply! Yes, this issue can reproduce when I run amplify pull two or more times.
Here is contents of amplify/.config/local-env-info.json. It seems not changed by amplify pull
{   "projectPath": "/Users/xxx/xxx/xxx",   "defaultEditor": "vscode",   "envName": "dev",   "noUpdateBackend": true }
Here is content of amplify/.config/local-aws-info.json. This content changed after first amplify pull.
Before running amplify pull.
{   "dev": {     "configLevel": "project",     "useProfile": true,     "profileName": "amplify-cli-user"   } }
After running Amplify pull.
{   "dev": {     "configLevel": "amplifyAdmin"   } }
amplify/.config/local-env-info.json is not removed by amplify init. amplify backup is available during amplify pull, but it is removed during amplify pull even if amplify pull is failed.

Hey @momomox are you still experiencing this issue?

Closing due to inactivity

@josefaidt
I'm sorry for my late reply.
Yes, I selected "No" to to "do you plan on modifying this backend?". And I can't run amplify pull without issue.

Hi,
Why do I have to do amplify init before every amplify push ???


Hash Sum mismatch in apt

Does this issue occur when all extensions are disabled?: Yes

VS Code Version:  1.87.0
OS Version: kali-rolling 2024.1

Steps to Reproduce:

sudo apt update

Err:4 https://packages.microsoft.com/repos/code stable/main armhf Packages
Hash Sum mismatch
Hashes of expected file:

Filesize:17061 [weak]
SHA512:77b070ae84b7593ae260425c80e221b8ecdf21d53b8183908c2e51d8a11f73267a0eaf3a4e6d4ff107d17e8ff2e90a544fad9943cd27b1ef02e17060cd964580
SHA256:3d308a4e98ce644f31add8d448ea27cb1e63ca8402ff5279688313d8d68f1d61
Hashes of received file:
SHA512:bdb79952d28092b054f107788a1eb3f788a059dec70b3b6704256c6ae8482799b456a41ddc751d102dedc9ff2d5d75f0b3ad0672682bd4073eb29141bb3e1d94
SHA256:31393513b8fc5c5e216ba0c735fecfde7497b5d59fb650875c5ec831970eded3
Filesize:17061 [weak]
Last modification reported: Wed, 28 Feb 2024 23:07:00 +0000
Release file created at: Wed, 28 Feb 2024 22:14:55 +0000

Failed to fetch https://packages.microsoft.com/repos/code/dists/stable/main/binary-armhf/Packages.gz  Hash Sum mismatch
Hashes of expected file:
- Filesize:17061 [weak]
- SHA512:77b070ae84b7593ae260425c80e221b8ecdf21d53b8183908c2e51d8a11f73267a0eaf3a4e6d4ff107d17e8ff2e90a544fad9943cd27b1ef02e17060cd964580
- SHA256:3d308a4e98ce644f31add8d448ea27cb1e63ca8402ff5279688313d8d68f1d61
Hashes of received file:
- SHA512:bdb79952d28092b054f107788a1eb3f788a059dec70b3b6704256c6ae8482799b456a41ddc751d102dedc9ff2d5d75f0b3ad0672682bd4073eb29141bb3e1d94
- SHA256:31393513b8fc5c5e216ba0c735fecfde7497b5d59fb650875c5ec831970eded3
- Filesize:17061 [weak]
Last modification reported: Wed, 28 Feb 2024 23:07:00 +0000
Release file created at: Wed, 28 Feb 2024 22:14:55 +0000
E: Some index files failed to download. They have been ignored, or old ones used instead.

I am running PopOS 22.04, same issue for me as well.
According to this issue: https://github.com/microsoft/vscode/issues/86858, it will normalize itself after some time.


AllocString implementation for FlycatcherString

This implements the issue #1, which is an implementation of FlycatcherString for AllocString.

The implemented functions have been fully tested and are working.


Collections749 better documentation for signedness

Updated documentation for COLLECTIONS-749.
fixes COLLECTIONS-749.

I think this PR is obsolete. Master now contains very similar text to that in this PR.

ping @Claudenw, see @aherbert 's comment above :point_up:

This remaining change must have already been done by a different commit as it is in git master.


Sync with upstream

patternfly 5
Search by ip, name, mac address, lldp
Expand button

/retest

/lgtm


Adds an Affinity palette file

Description
Adds an Affinity format palette file. This file is usable in Affinty Designer and Affinity Photo applications.
Screenshots

I'm closing this in favor of #110 which I didn't see existed prior to sending this pull request.

Hi @axelitus :wave:, thanks for your contribution anyway :+1:
No problem for the duplicate PR, the large amount of open issues and PRs can be somehow confusing and I hope to find time again to finally process them.